Haskell用在工程項目中有什麼優勢?


好處是語言的複雜性可以把不合格的程序員直接篩掉-&>_-&>

壞處是。。。有可能會招到Haskell原教旨主義者和函數式原教旨主義者-&>_-&>


haskell的wiki上有匯總總結,基本上是一年兩期,今年還只有上半年的第一期。

https://www.haskell.org/haskellwiki/Haskell_Communities_and_Activities_Report

你感興趣可以去看看那些實踐者們都是用在什麼場合就大概可以體會一點haskell在工程中的優勢了。

其實我看這個報告的時候有些失望,因為工程項目確實是少,當然這是符合haskell的熱度排名情況的(常年40左右)。

haskell最能體現工程層面優勢的項目應該是,io少,內存不緊張,業務邏輯特別複雜且多變的項目。


開發效率高

這個世界上解決問題有兩種方式

一種是遇到問題,繞開它

一種是遇到問題,克服它

就比如說,你遇到一個http發送請求的問題

一般的javaer會選擇,去網路上搜索一個包來,然後調用這個包裡面的api就好了

不否認這是一種方式

但是這種方式會帶來一些副作用,就比如當這個包出了某些問題的時候

你會發現,程序員們在給它解決bugs的時間要比他們自己去寫一個這樣的包的時間也多多了

這就是為什麼很多公司在拚命加班,但其實你認真看他們的產出,很少

另外一種方式就是,你自己寫,但是呢,我們提升單體實現這個過程的速度

當然自己寫也會有各種問題,但是根據我個人的經驗看

我自己實現的東西,未必就比別人實現的要差

大多數時候是要比別人實現的在性能上是更優的

haskell比較靈活,裡面都是符號,不像java裡面都是關鍵字

如果環境封裝得好的話,就是直接把io全部包裝成monad的話

用haskell是能大幅提升效率的,但是壞處也很明顯

如果讓haskell去做java該做的事的話,比如去實現一個框架

那就很慢了,就猶如用java去實現jvm一樣,也不是不可以

實際上java現在正在朝著這個方向使勁

但是一般情況下,不會特別快


推薦閱讀:

ZJU Lambda2017秋納筆試
無類型Lambda演算筆記-2(Lambda可定義性,附Haskell實例)

TAG:函數式編程 | Haskell |