2017-12-27 39 views
1

값 :오류 예를 들어, 나는 두 <code>either</code> 값이

Either String Config -- error string or config parsed 
Either String Env  -- error string or environment variables detected 

그리고이 기록에 자신의 값을 추출하고 싶습니다 : 빠른 경우 실패하면서

type App = App { config :: Config, env :: Env } 

가 오류 (두 값 중 하나의 값인 Left)입니다.

두 개의 case 문을 사용할 수 있지만 이미 여기에서 사용할 수있는 추상화가 있는지 궁금합니다.

이상하게도 오류가 발생하면 메시지를 로깅하고 프로그램을 즉시 종료합니다.

답변

6

Either String은 다음과 같은 경우에 Applicative입니다.

mcnf :: Either String Config 
menv :: Either String Env 

가정 당신은

mapp :: Either String App 
mapp = App <$> mcnf <*> menv 
+1

감사를 작성할 수 있습니다. 또한'System.Exit.die'를'both'에서 에러 처리에 사용합니다 : https://github.com/srid/slownews/commit/a80134c4d918e8b258ae3f1115a62c99ae9b601f –

+0

오른쪽에 대한 소리! – gallais