好的Haskell源码来阅读和学习

lui*_*dro 343 open-source haskell coding-style

什么是一些使用Haskell的开源程序,可以被认为是优质的现代Haskell?代码库越大越好.

我想从他们的源代码中学习.我觉得我已经超越了从小代码示例中学到的东西,这些代码通常是深奥的,小世界的.我想看看代码是如何构造的,当你有很多事情发生时,monad如何交互(日志记录,I/O,配置等).

Don*_*art 273

我推荐的是什么

阅读20世纪90年代不同研究生院的人们的代码

老主人读取代码某些人(不完整列表)

请注意,像我这样的人,Coutts,Mitchell,O'Sullivan,Lynagh等人从这些人那里学习了我们的Haskell风格.

阅读一些应用程序

  • 这是典型的haskell damit.使用php,您可以阅读一个问候世界并直接编写可怜的网站.有了haskell,你可以学到的东西没有上限,总会有更多有趣的扩展和论文出现.刚才我了解到大学有不同的风格,因此我必须检查所有这些...我什么时候有时间实际编写自己的haskell项目?:) (97认同)
  • 简而言之,不同风格的特征是什么? (38认同)
  • @grautur:更重要的是,他们为什么不同?有没有很好的技术原因? (16认同)
  • 在CMU,我学习了指称语义和程序派生(规范到实现的系统转换),这两者都对我的编程方法产生了深远的影响.你会在[我的博客](http://conal.net)上定期看到这两个主题.当我在软件库上工作时,我选择了少量类型,并从一个核心问题开始:"它是什么意思?".当我看到低级代码,例如命令式/"IO"时,我会问"这个代码是一个实现的外延抽象,以及如何从抽象中派生出来?" (15认同)
  • 在我看来,不同的风格是前维基/互联网时代不同学校的地理分离(有时是哲学上的分歧)的结果; 以及影响风格的每所学校的原始Haskell语言的遗产.随着Hackage,wikis和github的出现,现在很大程度上采用了均匀的Haskell风格(基于格拉斯哥和GHC的使用). (9认同)
  • 乌得勒支是一种语言孤立:) (4认同)
  • 浏览上面链接的代码,我发现很难真正区分样式.有声明与表达,monadic与applicative,whitespace与分号,literate-bird与literate-latex与文盲相比,但除此之外,不同代码看起来与其核心结构的关系远远超过其他任何东西,I认为.除了乌得勒支,这很奇怪:-) (2认同)

gee*_*aur 61

XMonad是一个开源的平铺窗口管理器,最初是在dwm上松散建模的.有许多不同质量的扩展,但核心是紧凑和良好的组织.

  • 核心,fwiw,也经过精心设计.核心的核心StackSet已经在Coq定理证明器中得到验证(即QC属性保持).这是病理设计护理的一个例子. (36认同)
  • 是的:-) Spencer和我更加关注xmonad核心的制作,而不是我参与的任何项目. (8认同)
  • @don:"病态"如同"好",不是吗?:) (6认同)

小智 17

Darcs是一个开源的源代码管理系统.它应该给你一个关于Haskell的好主意.

  • 在darcs上做了很多工作,我不会真的推荐它的源代码.它没有使用我认为好的Haskell样式.我想如果你好奇当小代码库变大而有机增长时会发生什么呢?那就是一个很好的例子.如果你想看到一个具有一致写作风格或明确设计目标的程序,我会在其他地方看. (16认同)

Son*_*nül 17

  1. Haskell: Functional Programming with Types

    Joeri van Eekelen,et al.| Wikibooks 2007年发布,290页

  2. Learn You a Haskell for Great Good!

    Miran Lipovaca | LearnYouaHaskell.com发布于2010年,176页

  3. Real World Haskell

    B. O'Sullivan,J.Goerzen,D.Stewart | O'Reilly Media,Inc.2008年出版,共710页

  4. The Haskell Road to Logic, Maths and Programming

    Kees Doets,Jan van Eijck | 大学出版物2004年出版,449页

  • 这些是书籍,而不是真实项目的源文件. (6认同)

Mat*_*man 8

Yesod Web平台的源代码相当复杂,经过深思熟虑,写得很好.您将从其附带的持久性库中学到很多东西.


Vic*_*rov 7

如果您关心网络编程,我会推荐Chris Done的lpaste项目.


dan*_*raj 5

GHC可能是用Haskell编写的最大或最大的开源项目之一.当我说最大的时候,我不只是在源大小方面,而是在影响,使用,创新,稳健性方面.GHC可以教你很多关于编写Haskell的知识.