问题标签 [haskell-turtle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
315 浏览

haskell - 如何在 Haskell Turtle 库中将“Shell Line”转换为“Text”?

考虑(inshell "echo A line of text." empty)有类型Shell Line

问题:如何将这种类型的值转换为Text

0 投票
1 回答
170 浏览

haskell - 在turtle中查找目录下与模式匹配的所有文件

我想使用turtle包中的find函数,使其匹配任何文件路径(以获得与find .bash等效的行为)。但是,我找不到可以与此函数一起使用的通配符模式。

我想我可以构造一个匹配任何字符零次或多次的模式,但我想避免重新发明轮子。

0 投票
0 回答
144 浏览

haskell - Turtle:处理非 utf8 输入

在我学习 Pipes 的过程中,我在处理非 utf8 文件时遇到了问题。这就是为什么我绕道进入 Turtle 库,试图了解如何在更高的抽象层次上解决那里的问题。

我想做的练习很简单:找到从给定目录可访问的所有常规文件的所有行的总和。这很容易通过以下 shell 命令实现:

我想出了以下解决方案:

只要目录中没有非 utf8 文件,此解决方案就会给出正确的结果。如果不是这种情况,程序将引发如下异常:

这是可以预料的,因为:

我想知道如何解决将不同编码读入的问题Text,以便程序可以处理这个问题。对于手头的问题,我想我可以避免转换Text为某个目录。

编辑

到目前为止,我能想到的唯一解决方案是:

问题是这将在每个文件中多计算一行,但至少允许解码非 utf8 ByteStrings。

0 投票
1 回答
129 浏览

haskell - 如何使用 Haskell Turtle 库打印路径?

要了解一点Turtle,我认为修改教程中的示例会很好。我选择从输出的每一行中删除多余的“FilePath”,认为这将是一个简单的练习。

然而,尽管作者努力使他的库易于使用,但我几乎没能用它来解决这个简单的问题。

我尝试了所有我看到的看起来可以让我以某种方式>>=从: , ,提升IO的方法,但没有成功。我变得沮丧,只有通过阅读源代码,我才能找到似乎有效的东西(我想到了“没有明显的缺陷”)。ShellMonadIOFoldMliftIO_foldIOTurtle

为什么这么难?使用该库的 API 如何从逻辑上得出解决方案?

0 投票
1 回答
152 浏览

haskell - 如何将标准输出/标准错误通过管道传输到 Turtle 中另一个命令的标准输入?

标题几乎说明了一切,我在文档中找不到明显措辞的答案。我也不清楚如何将 stdout/stderr 保存在一个变量中,以便以后用于管道到 stdin 以获取多个命令。概念上类似于下面的东西x <- shell a b意味着从 shell 命令获取标准输出并将其存储在x


0 投票
2 回答
227 浏览

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

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

我想对命令列表进行排序à la bash's &&,但我也想提取最终ExitCode值。

假设我有以下代码:

我试图看看我是否可以使用 Control.Foldl 来实现它,但没有找到解决方案。

有任何想法吗?

更一般地说,为什么 Turtle 不提供具有这样签名的函数:

0 投票
1 回答
222 浏览

haskell - Turtle:如何读取文件列表?

假设我们有一个my_file.txt包含内容的文件:

另一个文件my_other_file.txt包含:

我想读取这两个文件的内容,turtle以便我得到一个Shell将产生的行:

在 Haskell 的turtle库中,可以使用 读取文件列表input,例如:

我们有那个

并且Shell没有Monoid实例(我认为这是有道理的,因为我们无法关联IO操作),所以我能想到的唯一运算符是(<|>)

虽然这会产生预期的效果,但我想知道生态系统中是否有一个库来turtle处理这个问题,或者是否有traverse类似的操作可以在Alternative's 上使用。

编辑:上面的效果也可以通过使用来实现asum

0 投票
1 回答
163 浏览

haskell - Haskell Turtle 脚本:如何使用 Shell

基本上我想将所有视频文件名提供给 ffmpeg。两个问题:

  1. 如何procsShell流结合?
  2. ffmpeg 接受两个输入:一个用于-i输出文件名,一个用于输出文件名。用 Turtle 实现这一点的最佳实践是什么?

我已经看到了看起来很有希望的foldIO函数。但我不知道如何使用它。

0 投票
1 回答
338 浏览

haskell - 如何使用 Haskell turtle 从进程中捕获 stdout 和 stderr 输出?

我有上面的程序输出:

有没有办法可以捕获这个文本而不输出到 shell 的标准输出?

本质上,我想运行该流程并从操作中获取一个[Line]值而不是一个()IO

0 投票
2 回答
249 浏览

haskell - 将 Haskell Turtle 的 FilePath 与 readFile 一起使用

我正在尝试使用 Haskell Turtle 进行一些 CSV 文件处理,但是我在使用Turtle.FilePath来自选项解析器的问题时遇到了麻烦。这是一个例子:

salaries.csv在同一目录中有一个文件。如果我运行这个,我会回来FilePath "salaries.csv": openBinaryFile: does not exist (No such file or directory)。使用tfpToPfp产生相同的结果。如果我注释掉第一个readFile并取消注释另一个调用,BL.readFile sname那么它会完美运行。我也试过csvData <- BL.readFile $ fromString (tfpToStr fname)了,也报错。

可惜BL.readFile没有Turtle.FilePath直接取;它抱怨它没有得到一个Prelude.FilePath.

那么一个人应该如何Turtle.FilePath进入BL.readFile呢?

如果有区别,我正在使用堆栈解析器 LTS-9.9。