我无法在 do 表示法中混合纯函数和单子函数。我有一种感觉,我错过了一些明显的东西。
例如,假设我有这些功能
fa :: a -> IO b
fb :: b -> c
fc :: c -> IO d
z :: a -> IO c
z a = do x <- fa a
y <- fb x
z <- fc y
return z
这不起作用,因为
y <- fb x
行在 z 中,但是将纯 fb 函数与一元 fa 和 fc 函数结合起来的优雅方式是什么?