monad-transformers

___ answer4063700 ___

Es gibt zwei mögliche Lösungen. Dasjenige, das dem oben angegebenen Code am nächsten kommt, ist:

%Vor%

Das andere Formular verschiebt die Fehlerbehandlung innerhalb der Statusbehandlung:

%Vor%     
___ qstntxt ___

Ich muss eine Zustands-Monade schreiben, die auch die Fehlerbehandlung unterstützt. Ich dachte an die Verwendung der Entweder-Monade für diesen Zweck, weil es auch Details darüber geben kann, was den Fehler verursacht hat. Ich habe eine Definition für eine staatliche Monade gefunden, die die Maybe-Monade verwendet, aber ich bin nicht in der Lage, sie so zu modifizieren, dass sie entweder statt Maybe verwendet. Hier ist der Code:

%Vor%     
___ qstnhdr ___ Wie kann ich eine Zustands-Monade schreiben, die auch Fehler behandelt? ___ answer4063719 ___

Sie benötigen einen Monodentrafo. Monad-Transformer-Bibliotheken wie mtl ermöglichen es Ihnen, verschiedene Monaden zu erstellen, um eine neue Version zu erstellen. Mit mtl könnten Sie

definieren %Vor%

Damit können Sie sowohl auf den Status als auch auf die Fehlerbehandlung innerhalb Ihres %code% zugreifen.

    
___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ answer4065405 ___

Verwenden Sie %code% von %code% (anstelle von Entweder).

%Vor%

Wenn Sie sich nicht mit Monaden und Monad-Transformatoren auskennen, dann würde ich das zuerst machen ! Sie sind eine große Hilfe und Programmierer Produktivität Leistung gewinnen.

    
___ tag123state ___ Ein Entwurfsmuster, das den Zustand eines Objekts darstellt. Einer der Verhaltensmuster der Gang of Four. ___ tag123monads ___ Eine Monade in der Programmierung ist eine zusammensetzbare Berechnungsbeschreibung. Monaden sind ein wichtiges Konstrukt in funktionalen Programmiersprachen wie Haskell. ___ tag123montransformers ___ Monad-Transformer sind eine Abstraktion für die Kombination von Monaden. Auf diese Weise können Sie verschiedene rechnerische Effekte zusammenstellen und präzise gesteuerte Computerumgebungen aufbauen. ___ answer4074198 ___

Ich habe niemanden hier gesehen, der das Papier Monad Transformers Step by Step von Martin Grabmüller

Ich fand es sehr hilfreich beim Lernen über die Kombination von Monaden.

    
___ answer4063726 ___

Sie können immer einen ErrorT-Monade-Transformer mit einer State-Monade verwenden (oder umgekehrt). Sehen Sie sich die Transformatoren von alles über Monaden an.

HTH,

    
___ tag123statemonad ___ Eine Monade, die es erlaubt, Zustandsinformationen an Berechnungen anzuhängen ___
1
Antwort

Sollte ich MonadUnliftIO oder MonadMask für ähnliche Funktionen bevorzugen?

Ich baue gerade eine neue API und eine der folgenden Funktionen ist: %Vor% Ich versuche, das Tracer in eine Monade zu verschieben und mir eine Signatur zu geben, die mehr wie aussieht %Vor% Die Implementierung von inSpan verwendet...
26.09.2017, 11:20
2
Antworten

Wie man sich im monadstransformator verzweigt

Betrachten Sie einige Monade-Transformatoren, sagen Sie %Vor% Und einige Funktionen in J : %Vor% Dann fand ich mich in J context wieder. Ich kann schreiben %Vor% Nun möchte ich Queues in einem separaten Thread innerhalb von J...
06.03.2012, 13:23
1
Antwort

Wie kettet man Future [\ / [A, B]] in scala?

Wie kann ich ein for Verständnis mit den Daten vom Typ Future[\/[String,Int]] machen? Hier ist ein Startpunkt, der nicht kompiliert wird. %Vor% Hinweis: calculateStuff ist nur ein Beispiel, es wird tatsächlich verschiedene Funkti...
24.02.2014, 16:02
2
Antworten

Anwendbare Transformatorklassen

Wo sind die Umwandlungsklassen Applicative ? Ich wollte in einer früheren Antwort Übertragungsklassen für den anwendbaren Transformatorstapel verwenden , aber sie scheinen nicht zu existieren. Die Transformatoren und viele andere sind vo...
12.09.2014, 00:54
1
Antwort

Wie man veränderbaren Vektor in Zustands-Monade setzt

Ich habe ein kleines Programm in haskell geschrieben, um alle Vorkommen von Int-Werten in Tree mit State Monad mit Vector zu zählen: %Vor% Aber 'update' von unveränderlichen Vektoren erfolgt in O (n) -Komplexität. Und ich suche nach Update i...
10.05.2014, 10:34
2
Antworten

Wie funktioniert Entweder?

Ich verbringe die Hälfte meines Tages damit, herauszufinden, wie ich EdetT verwenden kann, um mit Fehlern in meinem Code umzugehen. Ich habe einen Transformator-Stack wie diesen definiert. %Vor% Das funktioniert ganz gut, solange ich nur...
20.01.2013, 20:10
1
Antwort

Aufräumen von Monaden - Anwendung eines Monodentransformators in newtype monad umwandeln

Ich versuche, z.B. ExceptT a (StateT A M) , für einige konkrete Typen A und monad M , und schliesse sie in meine neuen benutzerdefinierten Monaden. Zuerst habe ich festgestellt, dass StateT A M oft in anderen Kontexten auftaucht, u...
14.09.2015, 19:09
3
Antworten

Warum kommt der Transformator als erstes Argument von "run" Funktionen?

Ich meine, warum kommt es nicht zuletzt? Wegen dieser Konvention, einen Transformatorstapel auszuwerten, muss man eine unangenehme Sache schreiben: %Vor% anstelle von: %Vor% Und die Kombination mit sofortigem do wird umständlicher:...
27.03.2014, 06:53
1
Antwort

Verwenden Sie StateT in Web.Scotty

Ich versuche einen dummen Webserver zu erstellen, der Daten als State speichert. Ich verwende Web.Scotty . Ich habe ReaderT zuvor mit scotty verwendet, um auf config
16.12.2014, 00:01
2
Antworten

Status und IO Monaden

Ich habe versucht, meinen Kopf um das Konzept der Monaden zu wickeln und experimentiere mit dem folgenden Beispiel: Ich habe einen Editor -Datentyp, der den Zustand eines Textdokuments und einige Funktionen darstellt, die daran arbeiten....
11.08.2016, 07:41