Haskell #9 (Type variables)

--

Ref : Types and Typeclasses-Type variables

먼저 head 함수의 타입에 대해서 살펴봅시다.

head 함수는 어떤 타입의 리스트를 받아서 첫번째 요소를 반환하는 함수 입니다. 따라서 head의 타입은 [a] -> a 인데 여기서 “a”는 타입 변수(type variable) 입니다. 타입 변수 a는 마치 다른 언어들의 generics처럼 어떤 타입이든 될 수 있습니다. 하스켈에서는 이 타입 변수를 이용해서 매우 일반적인 함수들을 쉽게 작성할 수 있습니다. 타입 변수를 가진 함수들을 다형 함수(polymorphic functions)라고 부릅니다. 결론적으로 head 함수는 어떤 타입의 리스트를 받아서 동일 타입의 리스트의 첫번째 요소를 반환하는 것을 알 수 있습니다.

타입 변수는 하나의 이상의 문자열로 이름을 정할 수 있지만 일반적으로 a,b,c,d.. 같은 것을 사용합니다.

fst 함수의 타입을 살펴보자. fst는 두개의 타입을 포함하는 튜플를 입력 받아서 첫번째 컴포넌트와 동일한 타입의 요소를 반환하는 함수입니다. 위 예제에서 a, b는 다른 타입 변수입니다. 여기서 a와 b는 같은 타입일 수 있습니다. 단, 반화하는 값의 타입은 튜플의 첫번째 컴포넌트의 타입과 같아야 합니다.

--

--