在学习基本语法之后,阅读一些非平凡的代码是学习语言的快捷方式。我们还可以学习如何在阅读其他代码时设计库/软件。
我有以下列表。
Chess在OCaml中的Tomek Czajka程序。
HalDaumumé在Ocaml写了several machine learning libraries。包括决策树,逻辑回归和SVM。所有这些都是接近生产质量的代码。
Microsoft Research中F#中的Chess Game Analysis程序。
以上三个是我的最爱。你会建议一些其他来源吗?通用的开源软件都不错,专门的开源,比如我在这里列出的三个更受欢迎。
答案 0 :(得分:17)
Jean-Christophe Filliâtre's page在OCaml中有许多程序和库。
答案 1 :(得分:12)
OCaml的一个不太广泛的方面是高阶模块系统。 ocamlgraph库是受益于此语言功能的绝佳示例。
您可能还想阅读我的HLVM项目的OCaml源代码。我的书“OCaml for Scientists”(2005)中的源代码可以免费获得here但不是开源的。但是,它已经好几年没有更新了,今天你可能做得更好!
MLDonkey是一个早期的文件共享客户端,曾经拥有数十万用户。这是一个完全由OCaml编写的高度并发的开源应用程序,大约有171,000行代码。
Unison文件同步器是另一个完全由OCaml编写的开源实用程序应用程序,重量为24,000行代码。这也是使用异步IO在ML衍生物中编写的第一个流行应用程序。因此,今天执行异步的所有F#代码基本上都是从它派生的。
FFTW是用于快速傅立叶变换(FFT)的代码生成器,基本上是一种非常特殊的优化编译器形式,已被广泛采用并许可用于商业用途,例如:在MATLAB的核心。主要在OCaml中写入相当多的C并且重达14,000行OCaml代码。
您可能还想阅读Hevea和ANT的源代码,因为这些是OCaml的相当经典的应用程序域,但也包含数千名用户的生产质量应用程序。
我想不出任何推荐的开源F#代码。那里的珍贵很少,而且质量一般很差。大部分内容都像Haskell一样。 ; - )
答案 2 :(得分:5)
Janes Street发布了多个图书馆here。他们实际上在行业环境中使用OCaml。如果有的话,我会检查这些。
答案 3 :(得分:3)
查看关于书虫问题的这一系列博客文章,他们是轻松的,并且很好地展示了F#的多范式。最后一个看起来像最“功能性”。
答案 4 :(得分:2)
嗯,Unison已被建议我查看,以及解决Project Euler中的各种问题,但我个人通过编写自己的实践来完成更多工作} em>程序,所以我可能会将其中一个调整到OCaml中,看看它是怎么回事。
答案 5 :(得分:1)
你有o'caml的ocaml标准库的来源。
我猜你已经看过了,但是驼峰也是一个很好的来源: Here
答案 6 :(得分:0)