2014-12-02 241 views
-1

我們正在考慮在我們的項目中使用函數式語言。我試圖收集關於哪些功能語言可以開始的點(我們主要是java開發者)。我們正在考慮使用Ocaml。 我試圖從他們的網站學習ocaml.org。對於那些在工作場所使用Ocaml的人,我有以下問題。Ocaml學習資源

  1. Ocaml與Java相比能減少代碼行嗎?
  2. 你使用什麼編輯器?
  3. 我看到有很多Ocaml library實現-電池,核心等。一開始只能使用電池嗎?
  4. 你使用Ocaml Core(簡街)? 與標準差異有何區別?

一開始我們計劃在很小的範圍內使用Ocaml,可能在室內工程。

+1

我想,這個問題不是那麼糟糕,除了標題。它不是要求找到一個工具,而是要提供一些指導方針,並與經驗分享。儘管答案可以是自己的觀點,但是threre仍然是一些可以共享的社區知識,比如「核心」與其他圖書館的比較,不同編輯的支持程度等等...... – ivg 2014-12-02 11:40:26

+0

沒錯。我不是要求資源或書籍或比較。我期待人們與Ocaml的經驗。由於語言幾乎和Java一樣古老,我相信在Ocaml大量使用的生產系統中會有相當大的系統。 – Chirota 2014-12-04 16:27:08

回答

4

在Vector Fabrics中,我們廣泛使用OCaml。我們認識到函數式編程可能給我們的工程活動帶來的好處(我們主要構造用於分析C和C++程序的軟件工具),我們認爲Haskell和OCaml都是可以使用的語言。最後,我們決定採用OCaml,主要是因爲它的執行模式更簡單(熱切評估與Haskell的懶惰評估),因此對於程序員來說,推斷程序行爲對於不需要函數式編程背景的程序員來說可能更簡單一些(我們特別關注計劃的空間行爲推理,有時甚至是專家,在Haskell中也頗具挑戰性)。

OCaml允許你選擇性地「逃避」到命令式的,甚至是面向對象的編程,這有時會派上用場,但這並不是我們推薦給程序員的東西,因爲它是日常編程的好習慣。我們的基本原理是:一旦你採用了函數式編程語言,你最好用它來進行函數式編程,否則你很容易就會爲(爲此目的)笨拙的語法編寫命令式和麪向對象的程序。畢竟,如果你遇到問題,那麼面向對象編程的領域就更好了,那麼你最好選擇一種Java更適合的語言。

回答您的問題:

  1. 是否ocaml的減少代碼行相比,說的Java?是的,但只有確實採用編程的「功能風格」。另外,請注意:函數式程序可以非常簡潔,但有時可能會忽略算法固有的複雜性。
  2. 你使用什麼編輯器?我們主要使用emacs和vim等通用編輯器。
  3. 我已經看到,有很多Ocaml庫實現 - 電池,核心等。在開始時只能使用電池嗎?電池使一個很好的,可以說是功能強大的標準庫(但核心也是如此)。根據您的問題域,您可能需要使用自己的實用程序庫擴展標準庫。
  4. 您是否使用Ocaml Core(Jane Street)?與標準相比有何​​不同?我們不使用它,但請參閱,例如What are the pros and cons of Batteries and Core?

請注意,這些問題有很多可能的答案,我已經在很大程度上僅從Vector Fabrics角度回答了這些問題。實際上,您的問題對於堆棧溢出可能有點太寬泛。