Difference between revisions of "Ko/Either"

From HaskellWiki
Jump to navigation Jump to search
(문서 생성)
 
m (내용 위치, 변수 이름, 함수 결과 타입 변경)
 
Line 6: Line 6:
 
data Either a b = Left a | Right b
 
data Either a b = Left a | Right b
 
</haskell>
 
</haskell>
  +
 
== 활용 ==
   
 
<hask>Left</hask>는 주로 실패나 에러의 의미로 사용된다. <hask>Maybe</hask>의 <hask>Nothing</hask>과 비슷하다.
 
<hask>Left</hask>는 주로 실패나 에러의 의미로 사용된다. <hask>Maybe</hask>의 <hask>Nothing</hask>과 비슷하다.
   
 
<hask>Right</hask>는 주로 정상을 의미한다. <hask>Maybe</hask>의 <hask>Just</hask>와 비슷하다.
 
<hask>Right</hask>는 주로 정상을 의미한다. <hask>Maybe</hask>의 <hask>Just</hask>와 비슷하다.
 
== 활용 ==
 
   
 
<hask>Nothing</hask>에는 인자가 없어서 에러에 대한 정보를 담을 수 없지만 <hask>Left</hask>에는 인자에 에러 정보를 담을 수 있다. 주로 문자열로 에러 정보를 담는다. 예를 들어 아래와 같이 정수를 0으로 나누는 경우 에러의 이유를 문자열로 설명한다.
 
<hask>Nothing</hask>에는 인자가 없어서 에러에 대한 정보를 담을 수 없지만 <hask>Left</hask>에는 인자에 에러 정보를 담을 수 있다. 주로 문자열로 에러 정보를 담는다. 예를 들어 아래와 같이 정수를 0으로 나누는 경우 에러의 이유를 문자열로 설명한다.
   
 
<haskell>
 
<haskell>
safeDiv :: Int -> Int -> Either String a
+
safeDiv :: Int -> Int -> Either String Int
safeDiv x 0 = Left "divide by zero"
+
safeDiv _ 0 = Left "divide by zero"
 
safeDiv x y = Right (x `div` y)
 
safeDiv x y = Right (x `div` y)
 
</haskell>
 
</haskell>

Latest revision as of 02:13, 14 November 2023

정의

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

data Either a b = Left a | Right b

활용

Left는 주로 실패나 에러의 의미로 사용된다. MaybeNothing과 비슷하다.

Right는 주로 정상을 의미한다. MaybeJust와 비슷하다.

Nothing에는 인자가 없어서 에러에 대한 정보를 담을 수 없지만 Left에는 인자에 에러 정보를 담을 수 있다. 주로 문자열로 에러 정보를 담는다. 예를 들어 아래와 같이 정수를 0으로 나누는 경우 에러의 이유를 문자열로 설명한다.

safeDiv :: Int -> Int -> Either String Int
safeDiv _ 0 = Left "divide by zero"
safeDiv x y = Right (x `div` y)