首页 文章

真实世界Haskell编程[关闭]

提问于
浏览
48

几年来我一直是一位势在必行的开发人员,我从未有过学习函数式编程的冲动 .

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

Note: 当我说"real app"我不是在谈论一个现实世界, 生产环境 就绪应用程序 . 我只是说一个小样本应用程序,只是为了掌握它 . 我觉得像windows caculator的简化版本会很棒,然后可能会更复杂一点 .

7 回答

  • 89

    xmonad是事件驱动的(字面意思) . 它有一个侦听器循环,唤醒事件,修改建模X服务器的内部状态,然后呈现给屏幕 .

    http://xmonad.org

  • 6

    我曾经发现这个用haskell编写的irc bot:

    http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot

  • 6

    当你说“真实世界”的例子时,你可能会想到本质上是顺序或有状态的问题,或者做很多I / O,对吧?

    那么,游戏怎么样?

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

    然后,有一本书,甚至 Headers 中已经有你的问题:Real World Haskell,也是available for free

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

    很多时候(我不是说你的问题就是这种情况,但这是一种反复出现的模式)当有人说"but can Haskell be used in the real world"时,他们真正说的是"I know how to do this in C, and in Haskell I cannot do it in exactly the same way, therefore it must be impossible in Haskell, therefore Haskell is not ready for the real world" . 但他们错过的是,可能存在一种完全不同且更好的方法来解决问题 . (这就像说"Erlang doesn't have threads, therefore it cannot possibly be used to implement concurrent systems.")FRP就是一个例子 .

  • 2

    今天lightning talk我收集了这个展示案例Haskell应用程序列表,故意排除任何只针对程序员的东西:

    • darcs(自2002年以来,35 000 loc):分布式版本控制系统,创新地关注变化而不是状态 .

    • xmonad(自2007年以来,30000 loc):众所周知的平铺窗口管理器,具有庞大的布局库和其他插件 . 尽管其配置文件是Haskell文件,但仍将其列入列表 .

    • hledger(自2007年起,9000 loc):基于文本文件的双分类帐会计工具,ledger的克隆 .

    • Raincat(自2008年起,2000年左右):与猫不想弄湿的平台游戏 .

    • arbtt(自2009年起,2000年loc):我的基于规则的自动时间跟踪器 . 作为一个无耻的插头进入列表;可能不那么受欢迎 . 它现在有一个由Waldir Pimenta贡献的合适网页 .

    • detexify(自2010年起,500 loc):非常有用的LaTeX字符命令查找器的后端是用Haskell编写的 .

    • git-annex(自2010年起,28 000 loc):管理您的文件及其位置,dropbox和git的混合 . 由着名的Joey Hess撰写,他通过kickstarter谋生 - 他目前正在运行second round of funding

    • Nikki and the Robots(自2010年以来,18 000 loc):与Nikki以及他的机器人的平台游戏 . 它是作为商业独立游戏制作的,并通过付费你喜欢的方案出售,但该公司不幸倒闭了 .

    • hoodle(自2011年起,13 000 loc):笔记和PDF注释软件,如xournal .

    • Chordify(自2012年以来,?loc):分析音乐,例如来自YouTube视频,并计算相应的吉他和弦 . 封闭的软件,但据说是用Haskell编写的 .

    (也是featured on my blog,在slides of the talk上,每个节目都有很好的代表性图片 . )

  • 4

    以下是您要求的一些链接 .

    这个一个人解释了许多对Haskell的命令式程序员没有“意义”的事情

    Haskell Tutorial for C Programmers

    这是一个非常好的易于学习的教程

    Learn You a Haskell for Great Good

    用Haskell编写的Raytracer

    Haskell Raytracer

    您可以从这里下载Glasgow Haskell Compiler . GHC

  • 7

    你应该看看Real World Haskell . 这本书是免费提供的,展示了Haskell如何应用于现实世界的问题 . 我不会把它称为教程,因为它更全面 .

  • 8

相关问题