Rust相較於Haskell有何優勢?
其實這個比較意義不大。關公戰秦瓊。
Trait, 類型推導早就不是什麼很「嶄新」的特性而值得稱道了(當然學術領域的新工作還是會有很多)。也不僅僅是 Rust, Haskell, 很多其他語言也都具備這些特性呀。
高票答案提高了寫 DSL, 其實這恰好是 Haskell 的 best class. Rust 本來就不是為了編譯器或者PL領域而被設計出來的語言。真要比較的話,也應該是 Haskell, Idris, OCaml 等幾個語言放在一起比。比如「同樣支持 Dependent Type, Haskell 和 Idris有哪些異同 」 之類的,都是他們幾個語言關起門來可以一起探討的問題。從類型系統上說,Rust 不支持 Existential Types , Dependent Types. ADT 的使用很雞肋,還沒
另,就好比 Haskell avoid success at all costs, Rust 可能也並沒有那麼看重語言本身的表示能力? 有時候擁有一個賞心悅目的 state of xxx ecosystem 可能比 「 ...以上可以證明 我們擁有的xxx特性可以在xxx領域有很強的表達能力——然後就去安心睡覺」更吸引人(逃
subtyping 不能做靈活的 downcast,實在不能說值得稱道。但是 Rust 作為系統級編程語言的二代目,對 memory safe / data
sharing 的控制和思考,以及類似 "borrow checking, lifetime elision" 等特性和使用方法相對更值得探討些。有人認為是一個好的設計,有些人覺得過於繁瑣沒有必要,這些涉及到了 Rust 本身的設計初衷。而至於 ADT, 默認 immutable 那些看上去很有函數式 style 的東西,其實都只是些細枝末節。真要去學 FP 還不如直接看Haskell.
給Rust官方博客那幾篇看上去很promising的文章安利之後就覺得Rust有多牛逼真是:too young, too simple, sometimes naive
踢開Strict跟Lazy, Haskell還真完爆Rust (update: GHC 8.0將支持Strict)
就擼DSL而言, Haskell, Ruby屬第一梯隊, 第二梯隊算Scala(其實很接近第一梯隊), Rust那語法不像能擼出好看的DSL, 你說你有宏, Haskell也有Template Haskell, 然後用這個順帶解決了call c代碼的問題: Call C functions from Haskell without bindings
說resource management, Haskell老早就有Monadic Regions, 搞Rust的人去問Dan Grossman(Cyclone作者之一)搞Region好不好, Dan說太難了程序員hold不住然後搞成現在這個樣了
說並發, Mio: A High-Performance Multicore IO Manager for GHC [pdf] : haskell 不知道高到哪裡去了, Rust還抄了名字 carllerche/mio · GitHub, 我知道你們都喜歡秋山澪!
說類型系統, Rust現在還不茲磁Higher order type, 我當然是不茲磁的
歡迎對擼, 前提是看過paper (逃
update: 有人拿到Reddit開撕了: Comparing Haskell and Rust: which to choose, when?謝邀。
不需要學習Monad。這解開了很多人心頭的蛋蛋。
Rust有分號,不需要Monad了……
haskell比rust還是難度高不少的。
不討論效率,那還有什麼好討論的么?。。。Rust的賣點就是zero-cost abstraction啊
Rust 不用 garbage collection, 這是 Haskell 繞不過去的吧.好在不是純函數式的,但又參考了Scala等函數式語言的些好的語法。
好在不像Haskell從教科書式起家,更注重工程性一點,好在他是一個新開發的語言:)
還有Rust可以不用gc,可以寫非常底層的系統程序。
祖與占@ 就擼DSL而言, Haskell, Ruby屬第一梯隊 -- Lisp完爆各種語言,每個程序員都能輕鬆搞個自己的DSL。gerryxiao@ 講特性的話,haskell完爆所有語言。-- 估計你沒了解過Lisp方言Racket ! 可以去看Racket之父在youtube上的演講。
推薦閱讀:
※Haskell 裡面的 Functor 是個什麼概念?
※怎樣學習 haskell 效率比較高?
※如何評價最新推出的 Glasgow Haskell Compiler (GHC) 8.0.1 版本?
※haskell中的immutable array是如何實現隨機訪問的?
※如何評價即將正式 release 的 GHC 8.2.1 ?