z1n*_*Y5A 2 free-monad purescript
在purescript-free程序包中,有一个定义此解释器的代码示例:
teletypeN :: forall eff. NaturalTransformation TeletypeF (Eff (console :: CONSOLE | eff))
teletypeN (PutStrLn s a) = const a <$> log s
teletypeN (GetLine k) = pure (k "fake input")
Run Code Online (Sandbox Code Playgroud)
如何定义和运行返回类型为Array Int或的其他解释器State String Int?
您无法解释为特定的值,因为解释器是自然转换-提供的forall a. f a -> g a。该a由是做解释的功能在这里不能“感动”。
您可以解释为Array或State String,但是a将始终由您要解释的结构确定。如果您知道您只想解释,Free MyAlgebra Int -> Array Int那么无论如何都可以解决。