Robert Harper 不支持Haskell 的理由是?


Modules Matter Most

ML family的module system我不熟悉,所以這點不作評論;Harper認為Haskell的type class機制只是module system的一個受限的個例;

Lazy-by-default

這一點。。我部分同意。Haskell的lazy-by-default的語義雖然增加了語言的表達能力,但實際使用中容易造成space leak等各種問題,最後區分strict和non-strict使用會增加程序員思維負擔。

Managing side-effects via monads

這一點上他有所讓步;他同意將副作用反映到類型系統里是一件有意義的事情,至於怎樣做,除了Haskell的monadic IO以外,還有其他方法,比如新近的algebraic effect handler,等等。。這一點上沒有太多異議。

Cost model

Harper:Haskell怎麼算時間和空間複雜度啊?

我(小聲地):我們有deepseq。。

這一局算我輸。。

Parallelism

Harper:Haskell precludes parallelism, because blah blah blah

我:But GHC *does* support multi-core parallelism! And to my best knowledge, SML/NJ does not...

Harper楞一秒,換了話題。。

Separate compilation

Harper:Haskell不支持separate compilation,因為blah blah blah

因為他太激動,語速太快,所以沒辦法插嘴。。您老人家真的寫過Haskell嗎。。

unsafePerformIO is a necessary evil

這個我的確啞口無言。。

======

以上從草稿紙整理得到,不保證完整性和準確性。。


Harper在寫完這個以後憤憤的說了一句,「你們見過的幾乎所有的語言都是這麼設計的,(咽一口氣),除了Haskell」。看起來他對lazy的意見還真挺大的呢╮(╯_╰)╭


Bob 嘲諷過的東西有兩個,Dijkstra和除了SML的所有編程語言。


推薦閱讀:

Haskell 最有代表性的一段程序是什麼?
國內有哪些公司用Haskell做網站後端的?
Haskell 有哪些威力十足的庫?
有沒有比較實用、成熟的 Haskell 應用?

TAG:卡內基梅隆大學CarnegieMellonUniversity | Haskell |