gpt4 book ai didi

haskell - 如何将数据从 IO 读取到数据结构中,然后处理数据结构?

转载 作者:行者123 更新时间:2023-12-03 14:56:27 25 4
gpt4 key购买 nike

首先很抱歉做了典型的“我从哪里开始”的事情,但我完全迷失了。

我一直在阅读“Learn you a haskell for great good”网站,感觉现在已经有一个年龄了(差不多半个学期。我正要完成“输入和输出”一章,但我仍然没有线索如何编写多行程序。

我看过 do 语句,你只能用它来将 IO 操作连接到一个函数中,但我不知道我将如何编写一个实际的应用程序。

有人可以指出我正确的方向。

我来自 C 背景,基本上我在大学这个学期的一个模块中使用了 haskell,我想将 C++ 与 haskell 进行比较(在很多方面)。我正在寻找创建一系列搜索和排序程序,以便我可以评论它们在各自语言中的容易程度与它们的速度。

然而,我真的开始对使用 Haskell 失去信心,因为它已经六周了,我仍然不知道如何编写一个完整的应用程序,而且我正在阅读的网站中的章节似乎越来越长.

我基本上需要创建一个将存储在结构中的基本对象(我知道该怎么做),更多我正在努力解决的是,我如何创建一个从某个文本文件中读取数据并填充的程序首先包含该数据的结构,然后继续处理它。由于 haskell 似乎拆分了 IO 和其他操作,它不仅让我在程序中编写多行,我正在寻找这样的东西:

main = data <- getContent
let allLines = lines data
let myStructure = generateStruct allLines
sort/search/etc
print myStructure

我该怎么做?有什么好的教程可以帮助我学习现实的程序吗?

-一个

最佳答案

你提到看到do符号,现在该学习如何使用 do .考虑你的例子mainIO ,您应该使用 do 语法或绑定(bind):

main = do
dat <- getContent
let allLines = lines dat
myStructure = generateStruct allLines
sorted = mySort myStructure
searchResult = mySearch myStructure
print myStructure
print sorted
print searchResult

所以现在你有一个得到 stdin 的 main , 变成 [String]通过 lines ,大概将其解析为一个结构并对该结构运行排序和搜索。注意有趣的代码都是纯的 - mySort , mySearch , 和 generateStruct不需要是 IO(也不能是,在 let 绑定(bind)中),因此您实际上可以正确地一起使用纯正有效的代码。

我建议你看看 bind 是如何工作的( >>= )以及符号是如何脱糖到 bind 中的。 This SO question应该有帮助。

关于haskell - 如何将数据从 IO 读取到数据结构中,然后处理数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205556/

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