Burt.K

코코아를 좋아하는 프로그래머입니다 ;)

타입을 읽자.

Haskell 에서 타입을 지정할 때 :: 를 사용한다.

fst :: (a, b) -> a

 * 튜플을 받아서 첫 번째 요소를 반환하는 함수 타입
head :: [a] -> a

 * 리스트를 받아서 첫 요소를 반환하는 함수 타입
take :: Int -> [a] -> [a]

 * 정수와 리스트를 받고 리스트를 반환하는 함수 타입
zip :: [a] -> [b] -> [(a,b)] 

 * 타입이 같거나 다른 두 개의 리스트를 받고 각각의 리스트에서 요소를 조합해 튜플의 리스트를 반환하는 함수 타입

Class Constraints. Java, C# 등에서 Interface라고 생각하면 이해하기 쉽다.

sum :: Num a => [a] -> a

 * 'Num a =>' 의 뜻 Num 인터페이스를 준수하는 a 타입
 * Num 인터페이스를 준수하는 a 타입의 리스트를 받아서 a 타입 값을 반환하는 함수 타입
← 커링(currying) 함수가 왜 필요한가?
함수를 정의하자. →