问题标签 [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.
haskell - 如何在 Haskell Turtle 库中将“Shell Line”转换为“Text”?
考虑(inshell "echo A line of text." empty)
有类型Shell Line
。
问题:如何将这种类型的值转换为Text
?
haskell - Turtle:处理非 utf8 输入
在我学习 Pipes 的过程中,我在处理非 utf8 文件时遇到了问题。这就是为什么我绕道进入 Turtle 库,试图了解如何在更高的抽象层次上解决那里的问题。
我想做的练习很简单:找到从给定目录可访问的所有常规文件的所有行的总和。这很容易通过以下 shell 命令实现:
我想出了以下解决方案:
只要目录中没有非 utf8 文件,此解决方案就会给出正确的结果。如果不是这种情况,程序将引发如下异常:
这是可以预料的,因为:
我想知道如何解决将不同编码读入的问题Text
,以便程序可以处理这个问题。对于手头的问题,我想我可以避免转换Text
为某个目录。
编辑
到目前为止,我能想到的唯一解决方案是:
问题是这将在每个文件中多计算一行,但至少允许解码非 utf8 ByteString
s。
haskell - 如何使用 Haskell Turtle 库打印路径?
要了解一点Turtle
,我认为修改教程中的示例会很好。我选择从输出的每一行中删除多余的“FilePath”,认为这将是一个简单的练习。
然而,尽管作者努力使他的库易于使用,但我几乎没能用它来解决这个简单的问题。
我尝试了所有我看到的看起来可以让我以某种方式>>=
从: , ,提升IO
的方法,但没有成功。我变得沮丧,只有通过阅读源代码,我才能找到似乎有效的东西(我想到了“没有明显的缺陷”)。Shell
MonadIO
FoldM
liftIO
_foldIO
Turtle
为什么这么难?使用该库的 API 如何从逻辑上得出解决方案?
haskell - 如何将标准输出/标准错误通过管道传输到 Turtle 中另一个命令的标准输入?
标题几乎说明了一切,我在文档中找不到明显措辞的答案。我也不清楚如何将 stdout/stderr 保存在一个变量中,以便以后用于管道到 stdin 以获取多个命令。概念上类似于下面的东西x <- shell a b
意味着从 shell 命令获取标准输出并将其存储在x
haskell - Haskell:Turtle:从 Shell 中获取返回值
你如何从 Shell monad 中提取一个值?
我想对命令列表进行排序à la bash's &&
,但我也想提取最终ExitCode
值。
假设我有以下代码:
我试图看看我是否可以使用 Control.Foldl 来实现它,但没有找到解决方案。
有任何想法吗?
更一般地说,为什么 Turtle 不提供具有这样签名的函数:
haskell - Turtle:如何读取文件列表?
假设我们有一个my_file.txt
包含内容的文件:
另一个文件my_other_file.txt
包含:
我想读取这两个文件的内容,turtle
以便我得到一个Shell
将产生的行:
在 Haskell 的turtle
库中,可以使用 读取文件列表input
,例如:
我们有那个
并且Shell
没有Monoid
实例(我认为这是有道理的,因为我们无法关联IO
操作),所以我能想到的唯一运算符是(<|>)
:
虽然这会产生预期的效果,但我想知道生态系统中是否有一个库来turtle
处理这个问题,或者是否有traverse
类似的操作可以在Alternative
's 上使用。
编辑:上面的效果也可以通过使用来实现asum
:
haskell - Haskell Turtle 脚本:如何使用 Shell
基本上我想将所有视频文件名提供给 ffmpeg。两个问题:
- 如何
procs
与Shell
流结合? - ffmpeg 接受两个输入:一个用于
-i
输出文件名,一个用于输出文件名。用 Turtle 实现这一点的最佳实践是什么?
我已经看到了看起来很有希望的foldIO函数。但我不知道如何使用它。
haskell - 如何使用 Haskell turtle 从进程中捕获 stdout 和 stderr 输出?
我有上面的程序输出:
有没有办法可以捕获这个文本而不输出到 shell 的标准输出?
本质上,我想运行该流程并从操作中获取一个[Line]
值而不是一个()
值IO
。
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。