Come dice il titolo, sto cercando un programma che utilizzi i trasformatori monad in combinazione con una grande pila di Monade.Esempio di pila Monad grande
Qualcuno conosce un esempio del mondo reale?
Come dice il titolo, sto cercando un programma che utilizzi i trasformatori monad in combinazione con una grande pila di Monade.Esempio di pila Monad grande
Qualcuno conosce un esempio del mondo reale?
Un buon esempio è Haskeline - suo interno InputCmdT
tipo è una pila trasformatore monade profondità 6 (vedi here):
type InputCmdT m = StateT Layout (UndoT (StateT HistLog (ReaderT (IORef KillRing)
(ReaderT Prefs (ReaderT (Settings m) m)))))
che può effettivamente avere effetti curiosi, come soffia firma di tipo a sistema. Console.Haskeline.Emacs fino a oltre 20.000 linee per almeno una versione di GHC ...
Non so se questo conta come "mondo reale", ma nella mia estensione del tutorial Write Yourself a Scheme in 48 Hours ho implementato un interprete per un linguaggio di programmazione che utilizza il seguente stack:
type Eval a = ReaderT Environment (ErrorT LispError IO a)
e ho iniziato aggiungendo continuazioni al linguaggio definendo
type EvalCont r a = ContT r (ReaderT Environment (ErrorT LispError IO a))
non ho mai finito continuazioni di attuazione, ma si può vedere fino a che punto sono arrivato da checking it out on Github.
Definire "grande"? –
Penso che 3 sia già "grande" – nponeccop
Più sono, meglio è, ma> 3 è un buon inizio – nudded