学习OCaml和F#的好项目

时间:2010-01-07 10:23:52

标签: f# ocaml

在学习基本语法之后,阅读一些非平凡的代码是学习语言的快捷方式。我们还可以学习如何在阅读其他代码时设计库/软件。

我有以下列表。

  1. Chess在OCaml中的Tomek Czajka程序。

  2. HalDaumumé在Ocaml写了several machine learning libraries。包括决策树,逻辑回归和SVM。所有这些都是接近生产质量的代码。

  3. Microsoft Research中F#中的Chess Game Analysis程序。

  4. 以上三个是我的最爱。你会建议一些其他来源吗?通用的开源软件都不错,专门的开源,比如我在这里列出的三个更受欢迎

7 个答案:

答案 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代码。

您可能还想阅读HeveaANT的源代码,因为这些是OCaml的相当经典的应用程序域,但也包含数千名用户的生产质量应用程序。

我想不出任何推荐的开源F#代码。那里的珍贵很少,而且质量一般很差。大部分内容都像Haskell一样。 ; - )

答案 2 :(得分:5)

Janes Street发布了多个图书馆here。他们实际上在行业环境中使用OCaml。如果有的话,我会检查这些。

答案 3 :(得分:3)

查看关于书虫问题的这一系列博客文章,他们是轻松的,并且很好地展示了F#的多范式。最后一个看起来像最“功能性”。

答案 4 :(得分:2)

嗯,Unison已被建议我查看,以及解决Project Euler中的各种问题,但我个人通过编写自己的实践来完成更多工作程序,所以我可能会将其中一个调整到OCaml中,看看它是怎么回事。

答案 5 :(得分:1)

你有o'caml的ocaml标准库的来源。

我猜你已经看过了,但是驼峰也是一个很好的来源: Here

答案 6 :(得分:0)

对于基于网络的Ocaml代码Opa也开放了所有code