gpt4 book ai didi

Haskell:Turtle:从 Shell 中获取返回值

转载 作者:行者123 更新时间:2023-12-02 02:36:46 25 4
gpt4 key购买 nike

你如何从 Shell monad 中提取一个值?

我想对 bash 的命令列表进行排序 && ,但我也想提取最后的 ExitCode值(value)。

假设我有以下代码:

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给你一堆Fold其中: 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

关于Haskell:Turtle:从 Shell 中获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45907307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com