為什麼

作為一個寫了有一段時間OCaml的函數猿,對OCaml的設計是有一些心懷怨念的。近期開始學習.net平臺(以前接觸過一段時間,F#還是3.0),感覺F# 4.5的一些地方解決了我用OCaml不是舒爽的地方

命名空間

OCaml的默認命名空間是,文件名首字母大寫,這個規則讓我很抓狂,甚至我一度懷疑OCaml的開發者是個假的法國人,這毫無美感可言,最後為了得到一個好看的命名空間就得搞出bTProtocol.ml這種文件名字來。

而F#則提供了namespace和module兩個方法來讓我們定製自己的命名空間,所以這點很不錯。

作用域

OCaml中每次要使用let都要跟著一個in,並且要一層一層的,這就會讓我寫代碼縮近略深(主要是寫的不好,沒有太函數化思考)。但是F#使用了空格縮進,let後面無需跟隨一個in,同層級的變數只要聲明瞭就可以使用,這個有時候確實很方便。

UTF8

這個不得不說了,OCaml雖然加上了UTF8的支持,但是自帶類庫實在是缺乏。F#本身就是基於.net平臺UTF8的支持自然不再話下。

界面

OCaml的界面綁定不少,但是能多平臺穩定使用的,真心寥寥無幾,而F#可以藉助C#的Xamarin,Xamarin.Mac,或者GTK#來完成界面的開發,讓工具有個多平臺界面可用,而不是完全靠命令行。

其它

F#有很完善的開發體系支持,M$這種大廠推進,同時具備.net整個體系的支撐。雖然目前還不是很成熟,在很多方面無法和OCaml一較高下,但是非常值得一試。

推薦閱讀:

相關文章