아래 언어들의 타입 적는 방식을 비교해보자.
- C언어
- 파이썬
- 하스켈
C언어에서는 함수를 아래와 같이 선언할 수 있다.
int inc(int x)
{
return x + 1;
}
- 먼저 함수의 리턴 타입을 적는다.
int
- 함수의 이름을 적는다.
inc
- 괄호 안에 인자의 타입과 이름을 적는다.
(int x)
파이썬에서는 함수를 선언할 때 타입을 적지 않아도 된다.
def inc(x):
return x + 1
그런데 타입을 적을 수도 있다.
아래와 같이 타입 주석 Type Comments 라는 문법을 이용하면 된다.1
def inc(x):
# type: (int) -> int
return x + 1
인자가 여러개일 경우에는 아래와 같이 적는다.
def add(x, y):
# type: (int, int) -> int
return x + y
하스켈에서도 파이썬과 마찬가지로 아래와 같이 타입을 적지 않고도 함수를 만들 수 있다.
inc x = x + 1
하스켈에서는 타입을 적는 방식이 파이썬의 타입 주석을 적는 방식과 비슷하다.
inc :: Int -> Int
- 먼저 함수 이름을 적는다.
inc
- 쌍점 두개를 적는다.
::
- 인자의 타입을 적는다.
Int
- 화살표를 적는다.
->
- 마지막으로 리턴 타입을 적는다.
Int
하스켈에서 함수의 타입은 아무 곳에나 적어도 되지만 보통은 아래와 같이 타입을 먼저 적고 바로 다음 줄에 함수를 정의한다.
inc :: Int -> Int
inc x = x + 1
인자가 여러개일 경우에는 아래와 같이 화살표 ->
로 인자를 구분한다.
add :: Int -> Int -> Int
add x y = x + y
- C언어에서는 타입을 적어야 하지만 하스켈은 그렇지 않다.
- 파이썬에서는 타입 주석을 적어야 하는 위치가 정해져 있지만 하스켈은 그렇지 않다.
하스켈 잘 몰라도 타입 읽는 법만 알면 다른 사람과 대화가 된다?!
@dalinaum님의 의견으로 각주를 추가했습니다. 감사합니다.