Ocaml学习资源

时间:2014-12-02 06:16:18

标签: java ocaml

我们正考虑在项目中使用函数式语言。我正在尝试收集我们可以开始使用哪种函数式语言的点(我们主要是java开发人员)。我们正在考虑使用Ocaml。 我尝试从他们的网站 ocaml.org 学习。我对那些在工作场所使用Ocaml的人提出了以下问题。

  1. 与Java相比,Ocaml会减少代码行吗?
  2. 您使用哪些编辑?
  3. 我看到有很多Ocaml library个实施 - 电池,核心等。一开始只能使用电池吗?
  4. 您使用Ocaml Core(简街)吗?它的差异有多大 标准的一个?
  5. 一开始,我们计划在很小的数量内使用Ocaml,可能是在家庭项目中。

1 个答案:

答案 0 :(得分:4)

在Vector Fabrics,我们广泛使用OCaml。

认识到函数式编程可以为我们的工程活动带来的好处(我们主要构建用于分析C和C ++程序的软件工具),我们将Haskell和OCaml都视为要使用的语言。最后,我们决定选择OCaml,主要是因为它的执行模型更简单(渴望评估与Haskell的懒惰评估),因此对程序员的行为进行推理对于不一定有函数式编程的背景(我们特别关注程序的空间行为的推理,有时甚至是专家,在Haskell中非常具有挑战性。)

OCaml允许您有选择地逃避"对命令式甚至面向对象的编程来说有时会派上用场,但不是我们向程序员推荐的日常编程中的好习惯。我们的理由:一旦你采用函数式编程语言,你最好用它来进行函数式编程,否则你很容易最终编写命令式和面向对象的程序(为此目的)笨拙的语法。毕竟,如果您使用面向对象编程更好地处理问题域,那么您最好选择更适合这种语言的Java语言。

回答你的问题:

  1. 与说Java相比,Ocaml会减少代码行吗?是的,但前提是确实采用了"功能样式"编程。另外,要小心:功能程序可以非常简洁,但有时候符号可能会掩盖算法固有的复杂性。
  2. 您使用哪些编辑器?我们主要使用emacs和vim等通用编辑器。
  3. 我看到有很多Ocaml库实现 - 电池,核心等。一开始只能使用电池吗?电池是一个很好的,可以说是功能强大的标准库(但是也是如此)核心)。根据您的问题域,您可能需要使用自己的实用程序库扩展标准库。
  4. 您使用Ocaml Core(Jane Street)吗?它与标准版有何不同?我们不会使用它,但请参阅,例如What are the pros and cons of Batteries and Core?
  5. 请注意,这些问题有很多可能的答案,我在很大程度上完全从Vector Fabrics的角度回答了这些问题。事实上,对于Stack Overflow,您的问题可能有点过于宽泛。