Ko/Either
정의
타입 Either
는 아래와 같이 정의되어 있다.
data Either a b = Left a | Right b
활용
Left
는 주로 실패나 에러의 의미로 사용된다. Maybe
의 Nothing
과 비슷하다.
Right
는 주로 정상을 의미한다. Maybe
의 Just
와 비슷하다.
Nothing
에는 인자가 없어서 에러에 대한 정보를 담을 수 없지만 Left
에는 인자에 에러 정보를 담을 수 있다. 주로 문자열로 에러 정보를 담는다. 예를 들어 아래와 같이 정수를 0으로 나누는 경우 에러의 이유를 문자열로 설명한다.
safeDiv :: Int -> Int -> Either String Int
safeDiv _ 0 = Left "divide by zero"
safeDiv x y = Right (x `div` y)