学习OCaml和F#的好项目

25
学习基本语法后,阅读一些非平凡代码是快速学习语言的方法。我们还可以在阅读他人的代码时学习如何设计库/软件。
我有以下列表。
  1. Tomek Czajka用OCaml编写的Chess程序。

  2. Hal Daumé在Ocaml中编写了几个机器学习库,包括决策树、逻辑回归和SVM。所有这些库都是接近生产质量的代码。

  3. Microsoft Research中使用F#编写的Chess Game Analysis程序。

以上三个是我的最爱。你能推荐其他来源吗?通用开源软件很好,专业开源软件像我列出的三个更受欢迎

https://dev59.com/7HRC5IYBdhLWcg3wMd5S - Mauricio Scheffer
@Mauricio 感谢您的评论。我认为这两个线程有所不同,因为这里使用的语言是Ocaml和F#,而不仅仅是单一的F#。而且这个列表不仅包括开源代码,还包括一些代码片段或学术代码。 - Yin Zhu
Hal Daumé的软件已经迁移到http://www.umiacs.umd.edu/~hal/software.html。 - Thorkil Holm-Jacobsen
7个回答

17

12

OCaml 的一个不太为人所知的特性是高阶模块系统。 ocamlgraph 库是这种语言特性的一个很好的例子。

你也可以阅读我的 HLVM 项目的 OCaml 源代码。我写的《OCaml for Scientists》(2005 年)的源代码在 这里 免费提供,但不是开源的。然而,它已经好几年没有更新了,现在可能有更好的选择!

MLDonkey 是一个早期的文件共享客户端,曾经拥有数十万用户。它是一个重度并发的开源应用程序,完全由 OCaml 编写,代码量约为 171,000 行。

Unison 文件同步器是另一个完全由 OCaml 编写的开源实用程序,代码量约为 24,000 行。这也是第一个使用异步 IO 的 ML 派生语言编写的流行应用程序,因此现在所有使用异步编程的 F# 代码实质上都源自它。

FFTW 是用于快速傅里叶变换 (FFT) 的代码生成器,本质上是一个非常专业的优化编译器,已被广泛采用并获得商业许可,例如在 MATLAB 的核心中。它主要由 OCaml 编写,其中还有相当多的 C 代码,总共约有 14,000 行 OCaml 代码。

你可能也想阅读HeveaANT的源代码,因为这些是OCaml的经典应用领域,同时也是具有数千用户的生产级别应用程序。

我无法想到任何值得推荐的开源F#代码。现在很少有这样的代码,并且质量普遍很差。其中大部分读起来像Haskell。 ;-)


5
Janes Street发布了几个库,可以在这里查看:http://ocaml.janestreet.com/?q=node/13。他们实际上正在工业领域中使用OCaml语言。如果有需要的话,建议去查看这些库。

3

Chris Smith和Brian McNamara可以去吃我的短裤... - J D

2

嗯,有人向我推荐了Unison,并解决了来自Project Euler的各种问题,但我个人更喜欢编写自己的实用程序,所以我可能会将其中一个适应为OCaml,看看效果如何。


1

你已经拥有了ocaml标准库的源代码,它是用o'caml编写的。

我猜你已经看过了,但是caml hump也是一个很好的资源: 这里


1
OCaml标准库的代码质量并不是特别好。 - J D

0

对于基于Web的Ocaml代码,Opa也已经开源了所有代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接