2011-08-20 3 views
3

모나드 변압기 스택을 사용하는 방법을 알아낼 수 없습니다하스켈 : 나는 형에게이

type T s r a = StateT [s] (ListT (Reader r)) a 
나는 현재 상태의 각을 산출 모나드 가치를 창출하고 싶습니다

states :: T a r a 

하지만 오늘 바보 같아서 T a r [a] 값을 T a r a으로 변환하는 방법을 알 수 없습니다.

states = do 
    as <- get 
    -- insert magic 
    return a 

답변

5

아웃

states = get >>= lift . ListT . return 

확인까지 압축 할 수 있습니다

states = do 
    as <- get 
    a <- lift . ListT $ return as 
    return a 

이제 스마트 느낄 수있는 방법을 나타냈다