下面是packageEffect
官方教程中提供的示意图。pipes
type Effect = Proxy X () () X
Upstream | Downstream
+---------+
| |
X <== <== ()
| |
() ==> ==> X
| | |
+----|----+
v
r
由于Effect
没有任何数据流,我希望它只是Proxy X X X X
,密封所有流。但相反,它允许两个流入。有什么特别的原因吗?如果我只是写 aEffect
通常做的事情,使用 signature Proxy X X X X
,它可以很好地通过编译器:
myMonad :: Proxy X X X X IO ()
myMonad = do
a <- lift $ getLine
lift $ print a
return ()
为什么我们不能run
这样?