I 실패 일부 로깅 수행 할 수있는 연산에 대한 모나드 가지고만 모나드 변압기 외측 모나드 업데이트
f1 :: WriterT [String] (Either String) a
I 실패하지만, 몇몇 기록하지 않을 것이다 함수 가지고
f2 :: Writer [String] b
을
f2의 로그를 사용하여 f1의 작성자 모나드를 업데이트하고 f2 계산의 출력을 캡처하는 가장 좋은 방법은 무엇입니까? 순간 나는이 일을 해요 : 나는 그래서 작가 중심으로 전환하고 하나의 모나드 문제가 해결되지 않습니다, 다른 계산과 내부 모나드를 업데이트 리프트를 사용하고
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
.
감사 danr 및 rampion : 코멘트에
는 rampion는이 설정에서 기능을 포장의 버전을했다. wrap 메서드를 사용하기로했습니다. f2의 형식을 변경할 수는 있지만 그 함수는 다른 컨텍스트에 나타나므로 특정 호출 함수의 필요성에 대한 참조없이 형식을 작성하고 싶습니다. – mskel