나는 f
서명과 f'
서명을 가진 f'
을 가지고 있습니다. f' :: a -> StateT Int Reader b [c]
f' :: a -> StateT Int Reader b [c]
모나드 트랜스 포머 및 다중 모나드 쌓기
f (매우 단순화 된) 계산은 다음과 같습니다 :
f [] = return []
f (s:st) = f' s >>= \x ->
f st >>= \y ->
return $ ...
그리고 대신 ... 나는 돌아오고 싶습니다. x
의 [c]
부분 ++
모나드를 감싸는 y
의 [c]
부분.
수동으로 x
과 y
를 풀지 않고 수동으로 결과를 다시 입력하지 않고도이 작업을 수행 할 수 있습니까? 간단한 코드를 얻으려면 모나드 스택 맨 아래에 List 모나드가 필요합니까? Reader Monad는 분명히 MonadPlus 클래스의 인스턴스가 아닙니다.
오, 그래, 당신 're right-thx :) 근원적 인 모나드의 타입과 계산의 결과 타입을 섞었다. – haselhorstk