是否有海龟函数或其他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
定义幺半群的好处在于,我们不必每次折叠项目列表时都记住哪一个是中性元素,可以说是“烘焙类型”
然而,我不认为我们可以定义一个幺半群,因为中立元素必须以某种方式保留前一个命令的退出代码。然而,人们仍然可以定义一个半群