有哪些使用Haskell的开放源代码程序可以被认为是高质量的现代Haskell?代码库越大越好。
我想从他们的源代码中学习。我觉得我已经无法从小型代码示例中学习了,这些示例通常是深奥的和小型的。我想看看代码的结构,当发生很多事情(日志记录,I / O,配置等)时,monad如何交互。
#1 楼
我的建议。阅读1990年代不同研究生院的人的代码
牛津风格
格拉斯哥风格或(this )
鲸鱼风格(或此)
约克风格
波特兰风格或OGI风格(或此)
乌得勒支风格
耶鲁风格
特殊情况:CMU / Elliott
由老主人读某些人的代码(不完整列表)
马洛帕特森佩顿·琼斯;鳃; Launchbury;休斯瓦德勒鸟;克拉森;琼斯托尔马赫;牧; Swiestra;奥古斯森朗西曼华莱士;汤普森Hinze;长臂猿;莱恩;哈达克艾略特Finne; Chakravarty;和
任何写过实用的珍珠的人。
请注意,像我这样的人,库茨(Coutts),米切尔(Mitchell),奥沙利文(O'Sullivan),琳娜(Lynagh)等人都从这些人那里学习了我们的Haskell风格。
阅读一些应用程序
阅读GHC基础库源代码
阅读xmonad源代码
评论
这是典型的haskell damit。使用php,您可以阅读一个世界,并直接撰写可怜的网站。使用haskell,您可以学到的东西没有上限,总是会有更多有趣的扩展和论文。刚才我才知道大学风格各异,因此我必须检查所有这些……我什么时候有时间实际编写自己的haskell项目? :)
–塔拉施
2011年6月18日22:10
简而言之,不同风格的特征是什么?
– grautur
2011年6月19日19:00
@grautur:而且,更重要的是,它们为什么不同?有好的技术理由吗?
– Robert Massaioli
2011年6月20日13:51
在我看来,不同的风格是维基百科/互联网时代之前不同学校地域分离的结果(有时是哲学上的分歧)。以及每所学校的原始Haskell语言所带来的影响力。随着Hackage,Wiki和github的出现,现在基本上有了一种统一的Haskell风格(基于格拉斯哥和GHC的使用)。
–唐·斯图尔特
2011年6月20日18:44
在CMU,我学习了指称语义和程序派生(规范到实现的系统转换),这两者都对我的编程方法产生了深远的影响。您会在我的博客中定期看到这两个主题。当我在软件库上工作时,我会选择少量类型并从一个中心问题开始:“这是什么意思?”。当我看到低级代码(例如,命令式/ IO)时,我会问“该代码是什么表示抽象的实现,以及该实现如何从抽象中派生出来?”
–锥形
2011年6月22日在6:12
#2 楼
XMonad是一个开源的切片窗口管理器,最初是在dwm上进行松散建模的。有很多扩展,质量各不相同,但核心是紧凑且组织良好的。评论
fwiw的核心也经过精心设计。核心的核心StackSet已在Coq定理证明者中得到验证(即QC属性成立)。这是病理设计护理的一个例子。
–唐·斯图尔特
2011年6月18日在21:49
@don:“病态”与“好”一样,不是吗? :)
– Francesco
2011年6月19日下午5:20
是的:-) Spencer和我对xmonad核心的设计比我参与的任何项目都更加谨慎。
–唐·斯图尔特
2011年6月19日下午5:21
#3 楼
Haskell: Functional Programming with Types
Joeri van Eekelen等。 | Wikibooks
2007年出版,共290页
Learn You a Haskell for Great Good!
Miran Lipovaca | LearnYouaHaskell.com
于2010年出版,176页
Real World Haskell
2008年出版,共710页
The Haskell Road to Logic, Maths and Programming
Kees Doets,Jan van Eijck |高校出版物
2004年出版,共449页
评论
这些是书籍,不是真实项目的源文件。
–ses
2014年7月9日下午1:38
#4 楼
Darcs是一个开源的源代码管理系统。对于Haskell,应该会给您一个好主意。评论
在darcs上做了相当多的工作后,我真的不会推荐它的源代码。它没有使用我认为好的Haskell样式。我想如果您很好奇,当小型代码库有机增长时会变大,那会发生什么呢?如果您希望看到一个具有一致的写作风格或清晰的设计目标的程序,我可以在其他地方查找。
–詹森·达吉特(Jason Dagit)
2011年6月20日下午4:05
#5 楼
Yesod Web平台的源代码相当复杂,经过深思熟虑并且编写得很好。您还将从其附带的持久性库中学到很多。#6 楼
如果您关心Web编程,我会推荐Chris Done的lpaste项目。评论
也许这是github.com/lpaste/lambda-paste?
– TobiMcNamobi
18年11月7日,11:21
评论
即使这个问题已经解决,用户仍然可以编辑“接受的”答案并将其答案添加到该答案。