Jak mówi tytuł, szukam programu, który używa monadransformatorów w połączeniu z dużym stosem Monad.Przykład dużego stosu Monadów
Czy ktoś zna przykład z prawdziwego świata?
Jak mówi tytuł, szukam programu, który używa monadransformatorów w połączeniu z dużym stosem Monad.Przykład dużego stosu Monadów
Czy ktoś zna przykład z prawdziwego świata?
Dobrym przykładem jest Haskeline - jego wewnętrzny InputCmdT
typ to monada transformator stos głębokości 6 (patrz here):
type InputCmdT m = StateT Layout (UndoT (StateT HistLog (ReaderT (IORef KillRing)
(ReaderT Prefs (ReaderT (Settings m) m)))))
Które w rzeczywistości może mieć skutki ciekawy, takich jak dmuchanie jeden podpis wpisz w systemie. Console.Haskeline.Emacs do ponad 20 000 linii na co najmniej jedną wersję GHC ...
Nie wiem, czy to się liczy jako „prawdziwego świata”, ale w moim przedłużeniem samouczka Write Yourself a Scheme in 48 Hours I wdrożone tłumacza na język programowania, który wykorzystuje następujące stosu:
type Eval a = ReaderT Environment (ErrorT LispError IO a)
i zacząłem dodanie kontynuacje do języka poprzez zdefiniowanie
type EvalCont r a = ContT r (ReaderT Environment (ErrorT LispError IO a))
nigdy zakończeniu kontynuacje realizacji, ale można zobaczyć, jak daleko mam przez checking it out on Github.
Zdefiniuj "duży"? –
Myślę, że 3 jest już "duży" – nponeccop
Im więcej, tym lepiej, ale> 3 to dobry początek – nudded