Good Haskell source to read and learn from
哪些开源程序使用haskell,并且可以被认为是高质量的现代haskell?代码库越大越好。
我想从他们的源代码中学习。我觉得我已经过了从小代码示例学习的阶段,这些示例通常是向深奥的小世界学习的。我想看看代码是如何构造的,当您有很多事情(日志记录、I/O、配置等)时,monad是如何交互的。
- 即使此问题已关闭,用户仍可以编辑"已接受"的答案并将其添加到其中。
我推荐的。
20世纪90年代不同研究生学校的人们阅读代码
- 牛津风格
- 格拉斯哥风格或(这个)
- 查默斯风格(或此)
- 约克风格
- 波特兰风格或奥美风格(或此)
- 乌得勒支风格
- 耶鲁风格
- 特殊情况:CMU/Elliott
读代码由老主人某些人(不完整的列表)
- 马洛;帕特森;佩顿·琼斯;吉尔;朗奇伯里;休斯;韦德勒;伯德;克莱森;琼斯;托尔马赫;希尔德;斯威斯特拉;奥古斯森;朗西曼;华莱士;汤普森;欣泽;吉本斯;莱金;赫达克;埃利奥特;芬恩;查克拉瓦蒂;和
- 任何写过实用珍珠的人。
请注意,像我、库茨、米切尔、奥沙利文、林纳等这样的人从这些人身上学到了哈斯克尔风格。
阅读一些应用程序
- 这是典型的哈斯克尔·达米特。使用php,你可以看到一个你好的世界,然后直接写糟糕的网站。有了Haskell,你所能学到的东西就没有上限了,总会有更有趣的扩展和论文出现。刚才我知道大学有不同的风格,因此我必须检查所有这些…我什么时候有时间写我自己的haskell项目?:)
- 简而言之,不同风格的特点是什么?
- @格劳特:更重要的是,它们为什么不同?是否有充分的技术原因?
- @罗伯特马塞奥里:有什么好的技术原因吗?
- 在我看来,不同的风格是wiki/internet时代之前不同学校地理分离(有时是哲学上的分歧)的结果;每个学校的原始哈斯克尔语言的遗产影响了风格。随着黑客时代的出现,维基和Github现在基本上是一种同质的haskell风格(基于格拉斯哥和GHC的使用)。
- 浏览上面链接的代码,我发现实际上很难真正区分样式。有声明性与表达性、单态与应用性、空白与分号、识字鸟与识字乳胶与文盲,但除此之外,我认为不同的代码外观与其核心结构的关系比其他任何东西都大。除了乌得勒支,这很奇怪。
- 乌得勒支是一个孤立的语言:)
- 什么,没有Kiselyov风格?当你认为你真的了解哈斯克尔时,读一点Oleg的代码总是很好的。
- 我注意到,大多数Don的源代码示例不包含许多内联注释。这是偶然事件还是"好的哈斯克尔风格"?
- 在CMU中,我学习了表示语义和程序派生(规范到实现的系统转换),这两种方法都对我的编程方法产生了深远的影响。你会经常在我的博客上看到这两个主题。当我在一个软件库中工作时,我会选择一些类型,并从一个中心问题开始:"这意味着什么?".当我看到低级代码(如命令式/IO)时,我会问"这段代码是一个实现,它是如何从抽象中派生出来的?"
- @Jacquescarette,我怀疑McBride对Kiselyov有很好的补充作用。从学习良好的编码风格的角度来看,每一种都存在严重的弱点。麦克布赖德似乎并不关心他的程序运行多长时间,他真的是一个数学家。Kiselyov是一个计算机科学家,而不是程序员。他真的很喜欢拓展他正在研究的语言所能做的外部限制。他提出的想法可能是一种令人印象深刻的想法编码,但不一定是一种实际的表达方式。
- @我认为你把奥列格和康纳的出版物错当成了一个整体。他们有比论文中更多的可用代码。在论文中,你可以选择尽可能清楚地阐明想法。他们都建立了健全的、实用的系统。
Xmonad是一个开源的平铺窗口管理器,最初是在DWM上松散建模的。有很多不同质量的扩展,但是核心是紧凑的,组织良好的。
- 核心,FWIW,也被精心设计。核心的核心stackset已经在coq定理证明器中得到了验证(即qc属性保持)。这是病理设计护理的一个例子。
- @唐:"病理学"和"好"一样,不是吗?:)
- 是的:(-)斯宾塞和我对XMONAD核心的制作比我参与过的任何项目都更加关注。
DARC是一个开源的源代码管理系统。这会给你一个哈斯克尔的好主意。
- 我在DARC上做了一点工作之后,并没有真正推荐它的源代码。它没有使用我认为好的哈斯克尔风格。我猜,如果你好奇小代码基在有机增长的同时变大会发生什么,那么这就是一个很好的例子。如果你想看到一个有着一致的写作风格或明确的设计目标的程序,我会去别处看看。
Haskell: Functional Programming with Types。
Joeri van Eekelen等人|维基百科2007年出版,290页
江户十一〔一〕号
Miran Lipovaca_learnyouahaskel.com2010年出版,176页
埃多克斯1〔2〕
B.O'Sullivan,J.Goerzen,D.Stewart O'Reilly Media,Inc.2008年出版,共710页
埃多克斯1〔3〕
Kees Doets,Jan van Eijck大学出版物2004年出版,449页
Yesod Web平台的源代码相当复杂、考虑周全、编写良好。您将从随附的持久性库中学习到很多东西。
如果你关心网络编程,我会推荐ChrisDone的lpaste项目。
- 也许这个github.com/lpaste/lambda-paste?
GHC可能是用开源软件haskell编写的最大或最大的项目之一。当我说"最大"时,我的意思不仅仅是在源代码大小方面,还包括影响、使用、创新和健壮性。GHC可以教你很多关于写作的知识。