在学习了基本语法之后,阅读一些非平凡的代码是学习语言的快捷方式.我们还可以学习如何在阅读其他代码时设计库/软件.
我有以下清单.
一个国际象棋中的OCaml程序通过托梅克Czajka.
HalDaumé 在Ocaml 写了几个机器学习库.包括决策树,逻辑回归和SVM.所有这些都是接近生产质量的代码.
一个国际象棋博弈分析程序在F#在微软研究院.
以上三个是我的最爱.你会建议一些其他来源吗?通用的开源软件都很好,专门的开源就像我在这里列出的三个更受欢迎.
Jean-ChristopheFilliâtre的页面在OCaml中有许多程序和库.
OCaml的一个不太受欢迎的方面是高阶模块系统.该ocamlgraph库是这种语言特性中受益的一个很好的例子.
您可能还想将OCaml源代码读入我的HLVM项目.我的书OCaml for Scientists(2005)的源代码可以在这里免费获得,但不是开源的.但是,它已经好几年没有更新了,今天你可能做得更好!
MLDonkey是一个早期的文件共享客户端,曾经拥有数十万用户.这是一个完全由OCaml编写的大量并发的开源应用程序,重约171,000行代码.
的同音文件同步器是完全OCaml中写入另一个开源实用应用程序,在24000行代码称重英寸 这也是使用异步IO在ML衍生物中编写的第一个流行应用程序.因此,今天执行异步的所有F#代码基本上都是从它派生的.
FFTW是用于快速傅立叶变换(FFT)的代码生成器,实质上是一种非常特殊的优化编译器形式,已被广泛采用并许可用于商业用途,例如在MATLAB的核心中.主要在OCaml中写入相当多的C并且重达14,000行OCaml代码.
您可能还想阅读Hevea和ANT的源代码,因为这些是OCaml的相当经典的应用程序域,但也有成千上万用户的生产质量应用程序.
我想不出任何推荐的开源F#代码.那里的珍贵很少,而且质量一般很差.大部分内容都像Haskell一样.;-)
Janes Street 在这里发布了几个图书馆.他们实际上在行业环境中使用OCaml.如果有的话,我会检查这些.