2011-04-26 10 views
24

Esistono diverse librerie di trasformatori monad su Hackage. Alcuni sembrano avere più attenzione degli altri. Per citarne alcuni: mtl (versione corrente a seconda dei trasformatori per qualche motivo), trasformatori, monadLib, monads-tf, mtlx, contstuff.Librerie di trasformatori Monad - quale utilizzare?

Quale dovrebbe essere preferito e perché? Quali sono le loro caratteristiche uniche? Che dire delle prestazioni?

+2

Per rispondere a un punto triviale: credo che "mtl" venga progressivamente eliminato a favore di "trasformatori". Il passo corrente in questo processo è la sua sostituzione con un sottile involucro attorno a 'trasformatori', da cui la dipendenza. –

+5

@camccann: 'mtl' fornisce più funzionalità di' transformers', ed è equivalente a 'transformers' +' monads-fd' (che ora è deprecato). 'transformers' fornisce il più possibile in un pacchetto Haskell-98, con funzionalità extra (principalmente più istanze) fornite da' mtl', o pacchetti alternativi se lo si desidera (ad esempio 'monads-tf'). –

+0

@ John L: Oh, quindi 'mtl' sta effettivamente sostituendo' monads-fd', quindi? Grazie per il chiarimento, sono un po 'indietro rispetto ai tempi. –

risposta

16

Il Haskell Platform specifica mtl e transformers come standard.

Se non sei sicuro, dovresti semplicemente usare mtl.

Tuttavia, se si dispone di un motivo tecnico specifico per esaminare le nuove librerie, esse tendono ad affrontare problemi o aggiungere nuove funzionalità a mtl. monadLib in particolare ha alcune nuove funzionalità.

+2

Qual è la logica alla base della scelta di MTL da parte di HP? – Tener

+0

È la libreria monade più vecchia, più usata e meglio conosciuta. –

+2

... dove, [passando da dipendenze Hackage] (http://bifunctor.homelinux.net/~roel/hackage/packages/archive/revdeps-list.html), "più ampiamente usato" significa qualcosa come "un ordine di grandezza più di tutti gli altri oltre a "trasformatori" combinati ". –

Problemi correlati