你如何从 Shell monad 中提取一个值?
我想对命令列表进行排序à la bash's &&
,但我也想提取最终ExitCode
值。
假设我有以下代码:
import Turtle
type Commands = [Shell ExitCode]
run :: (MonadIO io) => Commands -> io ExitCode
run cs = whatIsThisFunction $ Prelude.foldl (.&&.) (return ExitSuccess) cs
whatIsThisFunction :: (MonadIO io) => Shell a -> io a
whatIsThisFunction = undefined
我试图看看我是否可以使用 Control.Foldl 来实现它,但没有找到解决方案。
有任何想法吗?
更一般地说,为什么 Turtle 不提供具有这样签名的函数:
sh' :: MonadIO io => Shell a -> io a