Ko/Maybe

From HaskellWiki
Jump to navigation Jump to search

타입 Maybe는 아래와 같이 정의되어 있다.

정의

data Maybe a = Nothing | Just a
  deriving (Eq, Ord)

활용

Maybe는 어떤 값이 없을 수도 있다는 것을 표현한다. 예를 들어 함수 head의 타입이 아래와 같을 때

head :: [a] -> a

head에 비어 있는 리스트 []를 넣을 경우 타입에 맞는 값을 리턴할 수 없어 head는 불완전한 함수가 된다.

이때 아래와 같이 Maybe를 이용하면 완전한 함수를 만들 수 있다.

safeHead :: [a] -> Maybe a
safeHead []    = Nothing
safeHead (x:_) = Just x

결과 값이 없는 경우를 값 Nothing으로 표현하는 것이다. 반면에 값이 있는 경우에는 Just로 원래 값을 감싸 리턴한다.