haskell - 现实世界的 Haskell 编程

标签 haskell functional-programming

作为命令式开发人员已有多年,我从未有过学习函数式编程的冲动。

几个月前,我终于决定学习 Haskell。这是一种很酷的语言,但我对如何用这种语言编写事件驱动的真实应用程序感到困惑。你知道关于它的好的教程吗?

注意:当我说“真正的应用程序”时,我并不是在谈论现实世界中的生产就绪应用程序。我只是指一个小示例应用程序,只是为了掌握它。我认为像 Windows 计算器的简化版本这样的东西会很棒,然后也许会更复杂一些。

最佳答案

当您提到“现实世界”的示例时,您可能正在考虑本质上是顺序的或有状态的或执行大量 I/O 的问题,对吗?

那么,游戏怎么样?

或者,X Window Manager 怎么样? ,可扩展Emacs clone text editorIDE

然后,有一本书,标题中甚至已经包含了您的问题:Real World Haskell ,这也是 available for free !

您可能想查看的另一件事是 Functional Reactive Programming 。 (例如,它在 Frag 中使用。)FRP 的有趣之处在于它允许您从一个非常不同的角度来看待 GUI 编程问题。如果您阅读 RWH 书中的 GUI 章节,您会发现它讨论了如何像用 C 语言一样编写 GUI 应用程序,甚至更好。 FRP OTOH 允许您以一种完全不同的方式编写它,而在 C 中甚至不可能

很多时候(我并不是说你的问题就是这种情况,但这是一种反复出现的模式)当有人说“但是 Haskell 可以在现实世界中使用吗”时,他们是什么真正的意思是“我知道如何在 C 中做到这一点,而在 Haskell 中我不能以完全相同的方式做到这一点,因此在 Haskell 中它一定是不可能的,因此 Haskell 还没有为现实世界做好准备”。但他们错过的是,可能有一种完全不同且更好的方法来解决问题。 (这就像说“Erlang 没有线程,因此不可能用于实现并发系统。”)FRP 只是一个例子。

关于haskell - 现实世界的 Haskell 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1113226/

相关文章:

Haskell: 'do' 构造中的最后一个语句必须是表达式

C++使用迭代器将函数映射到可迭代对象上

Haskell:理解 do 符号与 if-else 语句

functional-programming - SICP 练习 4.6 : Implementing let in the evaluator as a derived expression based on lambda

haskell - Haskell 或函数式语言的代理?

haskell - Haskell 中 (fmap.fmap) sum Just [1,2,3] 类型如何检查?

parsing - 如何使用 Data.ByteString 解析 7GB 文件?

haskell - 部分应用的中缀运算符的困惑

java - 使用 Google Guava 过滤 JavaBean 列表

scala - 用另一个列表中的单词过滤一个列表中的单词