2012-10-12 3 views
6

제목에서 알 수 있듯이 Monads의 큰 스택과 함께 모나드 트랜스포머를 사용하는 프로그램을 찾고 있습니다.큰 Monad 스택 예제

실제 사례를 아는 사람이 있습니까?

+0

"large"를 정의 하시겠습니까? –

+0

나는 3이 이미 "커다란"이라고 생각한다. – nponeccop

+0

더 좋을 것이다. 그러나> 3은 좋은 시작이다. – nudded

답변

8

하나의 좋은 예 Haskeline 인 - 내부 InputCmdT 형 깊이 6 모나드 변압기 스택이다 (here 참조), 실제로 이러한 시스템의 한 가지 유형의 서명을 불어 호기심 효과를 가질 수

type InputCmdT m = StateT Layout (UndoT (StateT HistLog (ReaderT (IORef KillRing) 
       (ReaderT Prefs (ReaderT (Settings m) m))))) 

. Console.Haskeline.Emacs 적어도 하나의 GHC 버전에서 최대 20,000 줄까지 ...

5

이 "현실 세계"로 계산하면 나도 몰라,하지만 튜토리얼 Write Yourself a Scheme in 48 Hours 내 확장에서 나는 다음과 같은 스택을 사용하는 프로그래밍 언어에 대한 통역을 구현 :

type Eval a = ReaderT Environment (ErrorT LispError IO a) 

나는 시작 내가 연속성을 구현 완료하지

type EvalCont r a = ContT r (ReaderT Environment (ErrorT LispError IO a)) 

를 정의하여 언어 연속성을 추가,하지만 당신은 내가 checking it out on Github에 의해 가지고 얼마나 멀리 볼 수 있습니다.