在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")
如何定义和运行返回类型为Array Int
或State String Int
的其他解释器?
答案 0 :(得分:5)
您无法解释为特定值,因为解释器是作为自然变换提供的 - forall a. f a -> g a
。这里的a
不能被正在进行解释的函数“触及”。
您可以解释为Array
或State String
,但a
将始终由您正在解释的结构决定。如果您知道自己只想解释Free MyAlgebra Int -> Array Int
,那么无论如何都会解决这个问题。