0

Ich möchtePURESCRIPT Eff Monad: Verwendung von nicht-native Rechen Effekte

x :: Eff (reader :: Reader Int, maybe :: Maybe) Int 
x = do 
    config <- ask -- configuration from (Reader Int) monad 
    just config -- using (Maybe) Monad 

runX :: Int 
runX = runPure (runMaybe doIfNothing (runReader 6 x)) -- outputs: 6 

mit dem Eff Monad

Ist das möglich zu schreiben in der Lage sein zu tun Eff verwenden?

Wenn nicht, wie können wir es funktionieren nicht mit Eff?

Antwort

1

können Sie verwenden, um die MaybeT und ReaderT Monade Transformatoren oben auf Eff, aber man kann die beiden nicht in der Weise entsprechen, die Sie oben geschrieben habe:

import Prelude 
import Data.Maybe 
import Control.Monad.Eff 
import Control.Monad.Eff.Class 
import Control.Monad.Eff.Console 
import Control.Monad.Maybe.Trans 
import Control.Monad.Reader.Trans 

x :: ReaderT Int (MaybeT (Eff (console :: CONSOLE))) Int 
x = do 
    liftEff (log "Asking...") 
    config <- ask 
    pure config 

main :: Eff (console :: CONSOLE) (Maybe Int) 
main = runMaybeT (runReaderT x 6) 
+0

Ich mag Monade Transformatoren nicht, Iv'e einige gesehen Gespräche, wo etwas wie Purscript's Eff Monad mit Monaden wie Reader verwendet wurde, aber ich weiß nicht, ob es in Purescript möglich ist, vielleicht müssen wir eine neue Monade definieren, die Eff ähnlich ist. – user47376

Verwandte Themen