Haskell:Turtle:从Shell中获取返回值
发布时间:2020-12-15 22:04:26 所属栏目:安全 来源:网络整理
导读:如何从 Shell monad中提取一个值? 我想对命令列表进行排序,比如bash 说我有以下代码: import Turtletype Commands = [Shell ExitCode]run :: (MonadIO io) = Commands - io ExitCoderun cs = whatIsThisFunction $Prelude.foldl (..) (return ExitSuccess)
如何从
Shell monad中提取一个值?
我想对命令列表进行排序,比如bash&&&&&&&&&&&&& 说我有以下代码: 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 解决方法
Turtle.Shell为您提供了
fold :: MonadIO io => Shell a -> Fold a b -> io b 和Control.Foldl为您提供了一堆折叠,其中包括:
last :: Fold a (Maybe a) .您可以将两者结合起来提取您的命令返回的最后一个ExitCode,如下所示:
import Control.Monad.IO.Class import Turtle.Shell as TS import Control.Foldl as CF sh' :: MonadIO io => Shell a -> io (Maybe a) sh' c = TS.fold c CF.last (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |