Ich habe gerade angefangen, über PureScript-Effekte zu lernen, und ich versuche, eine Funktion zu erstellen, die einen AUSNAHME-Effekt hat.Wie gebe ich einen Wert aus einer PureScript-Funktion mit einem EXCEPTION-Effekt zurück?
lengthGt5 :: forall eff. String -> Eff (err :: EXCEPTION | eff) String
lengthGt5 a = if (length a <= 5)
then throwException $ error "Word is not the right length!"
else a
main = do
word <- catchException handleShortWord (lengthGt5 "test")
log word
where
handleShortWord err = do
log (message err)
return "Defaut::casserole"
Wenn ich versuche, und führen Sie diese ich die folgende Fehlermeldung erhalten
Typ konnte nicht
String
with type
Eff
(err :: EXCEPTION
| eff0
)
String
übereinstimmen Ich verstehe, dass lengthGt5 einen String in einem Eff in den nicht eingewickelt zurückgeben muss Ausnahmefall, aber ich bin mir nicht sicher, wie ich einen "leeren Effekt-Wrapper" um den Wert a
erstellen kann. Denke ich über dieses Recht nach?
Beachten Sie, dass 'pure' anstelle von' return' jetzt verwendet wird, https: //github.com/purescript/purescript/wiki/Unterschiede-von-Haskell#return –