FRP-Frameworks und IO

9

Ich habe gerade FRP in Haskell untersucht (hauptsächlich reactive-banana (Testimonials!)), und ich frage mich, ob es für sie üblich ist, und im Falle von reaktiven Bananen, was ist der Grund, in IO zu arbeiten. Monade anstelle von MonadIO , oder rven besser, Monad (damit ich einen eigenen Stack bereitstellen könnte)? ​​

Ich glaube, das liegt an der GUI-Programmierung, wo Sie sie in einige bestehende Bibliotheken integrieren, die in IO funktionieren? Wäre es möglich, es zu ändern, damit ich es mit benutzerdefinierten Monad Stack integrieren konnte?

    
Bartosz 25.10.2014, 07:04
quelle

1 Antwort

4

Wenn Sie fragen, warum

%Vor%

erwartet ein Ereignis mit Werten vom Typ IO () anstelle einer benutzerdefinierten Monade M () mit instance MonadIO M , dann lautet die Antwort:

In der Praxis fügen benutzerdefinierte Monad-Stacks nur State / Reader / Writer-Effekte zur Basis IO monad hinzu. Theoretisch ist es jedoch durchaus möglich, fancy control mechanism wie Koroutinen oder Nicht-Determinismus hinzuzufügen. Ich weiß nicht, wie ich den inneren Zustand, der sich aus den Kombinatoren ergibt, mit diesen allgemeineren Auswirkungen integrieren kann, und ich habe keine Ahnung, was es bedeutet, dass ein Ereignis in einem nicht-deterministischen Kontext geschieht. Deshalb ist accumE auf reactimate beschränkt.

Wenn Sie einen benutzerdefinierten Monad Stack der Familie state / reader / writer haben, ist es normalerweise möglich, ihn einer reinen IO Berechnung zuzuordnen und diese mit IO zu verwenden. Wenn Sie feststellen, dass dies nicht funktioniert (ich denke, dass es ein Problem geben könnte), würde ich eine genauere Beschreibung der konkreten Situation benötigen, um zu helfen.

    
Heinrich Apfelmus 26.10.2014, 18:13
quelle

Tags und Links