In vielen Fällen ist mir nicht klar, was man erreichen kann, wenn man zwei Monaden mit einem Transformator kombiniert, statt zwei getrennte Monaden zu verwenden. Offensichtlich ist die Verwendung von zwei separaten Monaden ein Ärger und kann eine Notation innerhalb der Do-Notation beinhalten, aber gibt es Fälle, wo es einfach nicht ausdrucksfähig genug ist?Warum unterscheiden sich Monad-Transformatoren von Monaden?
Ein Fall scheint StateT on List zu sein: das Kombinieren von Monaden bringt nicht den richtigen Typ, und wenn Sie den richtigen Typ über einen Stapel von Monaden erhalten wie Bar (wobei Bar a = Writer w (Identität a))), es tut nicht das Richtige
Aber ich hätte gerne ein allgemeineres und technisches Verständnis von genau, was Monade Transformatoren bringen, wenn sie sind und aren ' t notwendig, und warum
Um diese Frage zu stellen etwas mehr konzentriert.
- Was ist ein aktuelles Beispiel einer Monade ohne entsprechenden Transformator (dies würde veranschaulichen, was Transformatoren tun können, wenn sie nur Monaden stapeln).
- Sind StateT und ContT die nur Transformatoren, die einen Typ nicht entspricht der Zusammensetzung von ihnen mit m geben, für eine zugrunde liegende Monade m (unabhängig davon, welcher Reihenfolge sie zusammengesetzt sind.)
(ich bin nicht interessiert an bestimmten Implementierungsdetails bezüglich der verschiedenen Bibliotheken, sondern eher an der allgemeinen (und wahrscheinlich Haskell unabhängigen) Frage, was monad Transformatoren/Morphismen als Alternative zum Kombinieren von Effekten hinzufügen, indem man eine Menge monadischer Konstruktoren stapelt.)
(Um ein wenig Kontext zu geben, bin ich ein Linguist, der ein Projekt tut, um Montague Grammatik zu bereichern - hat einfach Lambda-Kalkül für compos eingegeben Wortbedeutungen in Sätze - mit einem Monad-Transformatorstapel. Es wäre wirklich hilfreich sein, zu verstehen, ob Transformatoren tun etwas wirklich nützlich für mich.)
Danke,
Reuben
Was meinen Sie mit "zwei getrennte Monaden verwenden"? Kannst du ein Beispiel geben? – ErikR
Mögliches Duplikat von [mtl, Transformatoren, Monaden-fd, MonadLib und dem Paradox der Wahl] (http://stackoverflow.com/questions/2769487/mtl-transformers-monads-fd-monadlib-and-the-paradox- der Wahl) –
Ich habe gewählt, um zu schließen, weil es wirklich klingt, als ob Sie für den Unterschied zwischen verschiedenen Monade Transformer-Bibliotheken fragen, und diese Frage hat bereits eine ausgezeichnete Antwort. Wenn Sie denken, dass Ihre Frage anders ist, könnten Sie vielleicht näher darauf eingehen. –