首先抱歉做了"我从哪里开始"的典型事情,但我完全迷失了.
我一直在阅读"了解你是一个伟大的好人"网站,感受现在的感觉(大约半个学期.我即将完成'输入和输出'一章,我仍然没有如何编写多行程序的线索.
我已经看过do语句了,你只能使用它来将IO动作连接到一个函数中,但我看不出我将如何编写一个真实的应用程序.
有人能指出我正确的方向.
我来自C背景,基本上我在本学期的uni中使用haskell作为我的一个模块,我想比较C++和haskell(在很多方面).我正在寻找创建一系列搜索和排序程序,以便我可以评论他们在相应语言中的容易程度与他们的速度.
但是,我真的开始放弃使用Haskell已经六周了,我仍然不知道如何编写完整的应用程序,我正在阅读的网站中的章节似乎越来越长.
我基本上需要创建一个将存储在结构中的基本对象(我知道该怎么做),更多我正在努力的是,如何创建一个从某个文本文件中读取数据的程序,并填充首先是具有该数据的结构,然后继续处理它.由于haskell似乎拆分IO和其他操作,它不会让我在程序中写多行,我正在寻找这样的东西:
main = data <- getContent
let allLines = lines data
let myStructure = generateStruct allLines
sort/search/etc
print myStructure
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?任何好的教程,将帮助我开始实际的程序?
-一个
Tho*_*son 10
你提到看到do符号,现在是学习如何使用的时候了do.考虑你的例子main是IO,你应该使用do语法或绑定:
main = do
dat <- getContent
let allLines = lines dat
myStructure = generateStruct allLines
sorted = mySort myStructure
searchResult = mySearch myStructure
print myStructure
print sorted
print searchResult
Run Code Online (Sandbox Code Playgroud)
所以现在你有了一个main stdin,将它转换为[String]via lines,可能会将其解析为一个结构,并对该结构进行排序和搜索.请注意,有趣的代码都是纯粹的 - mySort,mySearch并且generateStruct不需要是IO(并且不能在let绑定中),因此您实际上正在使用纯粹且有效的代码.
我建议你看看bind works(>>=)以及如何将符号desugars绑定到bind中. 这个问题应该有所帮助.
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |