그래서 나는 사용자 정의 오류 모나드를 썼다. 그래서 나는 모나드 법칙에 대한 몇 가지 법칙을 증명할 수 있을지 궁금했다. 누군가 나를 도울 수있는 시간을 갖기를 원한다면 많은 도움이 될 것입니다. 감사!내가 쓴 오류 모나드에 대한 모나드 법칙을 증명하는 법
그리고 여기 내 코드입니다 :
data Error a = Ok a | Error String
instance Monad Error where
return = Ok
(>>=) = bindError
instance Show a => Show (Error a) where
show = showError
showError :: Show a => Error a -> String
showError x =
case x of
(Ok v) -> show v
(Error msg) -> show msg
bindError :: Error a -> (a -> Error b) -> Error b
bindError x f = case x of
(Ok v) -> f v
(Error msg) -> (Error msg)
무엇이 도움이 필요합니까? 벌써 얼마나 멀었 어? –
이 시점에서 나는 그것에 대해 진전을 이루지 못했습니다. 그 모나드 법칙들이 만족 스럽다는 것을 보여주는 도움이 필요합니다. –
그 동안 '실패 = 오류'를 '모나드 오류'인스턴스에 넣을 수도 있습니다. 그러면'do' 표기법의 패턴 매칭 실패가보다 추상적으로 '오류'대신 '오류'로 정의됩니다. – luqui