gpt4 book ai didi

string - 在haskell中删除文本文件中的重复项

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

我正在尝试从文本文件中删除重复项,并且我尝试了如下代码;

import Data.List
main = do
let singlewords = []
handle <- readFile "/tmp/foo.txt"
singlewords = words handle
nub singlewords

它当然会出错,因为我对 haskell 很陌生,并且我一直在做一些练习,但我仍然认为我还有更多时间来适应它。我真的非常感谢您的帮助。

最佳答案

您的代码已修复:

import Data.List

main = do
-- let singlewords = [] -- this line removed
content <- readFile "/tmp/foo.txt"
let singlewords = words content -- added the let keyword
return (nub singlewords) -- added call to return

在第一行写入 let singlewords = [],然后尝试为 singlewords 分配一个新值。这不是我们在 Haskell 中的做法,在使用名称之前不需要“声明”或“定义”名称。

在 Haskell 中,我们将有效计算(IO 是有效计算的一种类型)与纯计算分开。我们使用绑定(bind)有效计算的结果

name <- computation

我们使用

绑定(bind)纯计算的结果
let name = computation

当处于 do block 中时。

do block 中的最后一行是整个 block 将计算的内容,因此必须是有效的计算。在您的示例中,您想要返回纯计算的结果,因此必须将结果提升为有效的结果,我们使用 return 来实现这一点。

<小时/>

要查看您想要将其输出到控制台的单个单词,可以使用几个函数来执行此操作:https://hackage.haskell.org/package/base-4.8.1.0/docs/Prelude.html#g:27

最简单的方法是使用 print 输出列表 singlewords:

main = do
content <- readFile "/tmp/foo.txt"
let singlewords = nub (words content)
print singlewords

关于string - 在haskell中删除文本文件中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34443144/

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