是否有海龟函数或其他Haskell抽象用于使用&;连接命令&;

是否有海龟函数或其他Haskell抽象用于使用&;连接命令&;,haskell,haskell-turtle,Haskell,Haskell Turtle,我有以下代码: foldM(\exitCode args->pure exitCode.&&someCmdWith args)ExitSuccess argss 它使用的是的运算符 对于将someCmdWith应用于argss的结果,我是否可以使用更好的抽象来应用&.?这是否可行 runCmds argss = foldr (.&&.) (pure ExitSuccess) (fmap someCmdWith argss) 如果你想写得更短,我相信这也行: runCmds =

我有以下代码:

foldM(\exitCode args->pure exitCode.&&someCmdWith args)ExitSuccess argss
它使用的是的运算符

对于将
someCmdWith
应用于
argss
的结果,我是否可以使用更好的抽象来应用
&.

这是否可行

runCmds argss = foldr (.&&.) (pure ExitSuccess) (fmap someCmdWith argss)
如果你想写得更短,我相信这也行:

runCmds = foldr (.&&.) (pure ExitSuccess) . fmap someCmdWith
这样行吗

runCmds argss = foldr (.&&.) (pure ExitSuccess) (fmap someCmdWith argss)
如果你想写得更短,我相信这也行:

runCmds = foldr (.&&.) (pure ExitSuccess) . fmap someCmdWith
(.&&&.
看起来是关联的,而且似乎有一个中性元素(
纯ExitSuccess
),所以让我们定义一个
幺半群

newtype UntilFailure = UntilFailure { runUntilFailure :: IO ExitCode }

instance Monoid UntilFailure where
     mappend (UntilFailure a1) (UntilFailure a2) =  UntilfFailure (a1 .&&. a2)
     mempty = UntilFailure (pure ExitSuccess)
然后我们可以写一些东西,比如:

runUntilFailure . foldMap UntilFailure $ someCmdWith <$> argss
runUntilFailure。foldMap直到失败$someCmdWith argss
定义
幺半群的好处在于,我们不必每次折叠项目列表时都记住哪一个是中性元素,可以说是“烘焙类型”

然而,我不认为我们可以定义一个幺半群,因为中立元素必须以某种方式保留前一个命令的退出代码。但是,我们仍然可以定义一个
半群

(.&&&&&)
看起来是关联的,并且似乎存在一个中性元素(
纯ExitSuccess
),所以让我们定义一个
幺半群

newtype UntilFailure = UntilFailure { runUntilFailure :: IO ExitCode }

instance Monoid UntilFailure where
     mappend (UntilFailure a1) (UntilFailure a2) =  UntilfFailure (a1 .&&. a2)
     mempty = UntilFailure (pure ExitSuccess)
然后我们可以写一些东西,比如:

runUntilFailure . foldMap UntilFailure $ someCmdWith <$> argss
runUntilFailure。foldMap直到失败$someCmdWith argss
定义
幺半群的好处在于,我们不必每次折叠项目列表时都记住哪一个是中性元素,可以说是“烘焙类型”

然而,我不认为我们可以定义一个幺半群,因为中立元素必须以某种方式保留前一个命令的退出代码。然而,人们仍然可以定义一个
半群