想要理解函式式程式設計的思想,最好用哪種函式式程式語言入門?

時間 2021-05-30 19:42:54

1樓:

SML虐我千百遍,我待SML如初戀…上學期上了CMU 15150,差一點就拿C了好驚險。SML作為教學用還是很不錯的,因為理論方面比較完善。SML裡有個概念叫totality。

有了這個totality可以證明很多theorem。這個是Haskell做不到的

2樓:

Scheme/Standard ML/Haskell

反正每天看的Functional相關的資料一上來不是Haskell就是ML,要麼就是直接Lambda Calculus開講。

3樓:

我覺得OCaml是很實用的語言,雖然沒有Haskell那麼學術,但是真的是很實用的語言,而且入門也不難,速度又快,主要的缺點就是對windows平台不是那麼友好(如果你要好好在windows下面用ocaml,得會一些bash,得懂一些c++編譯器的使用,因為初期好多手動的工作,尤其是你想用脫離cygwin和mingw用乙個純msvc版本的ocaml的話,你還得完整地自己把ocaml編譯過)

不過我的函式式啟蒙是從用C#下面的Linq開始的。

我覺得還是結合實際工作的需求去入門去比較好。

4樓:不可定向

推薦Scheme,Lisp的方言之一。

建議用r5rs標準,極簡主義,整個標準一百頁都不到。還有中譯版,不到五十頁。

配合《SICP》更佳。

5樓:

Scheme、Standard ML偏教學,語法要簡單很多,學習資源也豐富,更適合用來了解核心的函式式程式設計思想。Scala、Haskell、Common Lisp這些偏向開發,可能更實用,但也更繁瑣了。主要思想掌握了,上手同類東西還是很快的,所以Scheme、SML挺好的。

另外不管學習哪種函式式語言,工作上可能都不能直接用。乾脆不要太計較語言,找乙個靠譜的學習資料更重要。下面列舉一些課程吧:

CMU 15-150 ,使用SML。可能是感覺並行和分布式的春天來了,CMU突然開始非常重視函式式程式設計,7門計算機核心課程中兩門是函式式相關的https://www.

csd.cs.cmu.edu/content/

bachelors-curriculum-admitted-2014

,另外一門是使用函式式語言做課程作業的演算法和資料結構http://www.

cs.cmu.edu/~15210/index

.html

)MIT 6.037 - Structure and Interpretation of Computer Programs,使用Scheme。使用的是SICP這本與課程同名的書,曾經的課程編號是6.

001,是MIT EECS必學的4門課程之一。現在的和MIT6.001對應的是MIT6.

00,程式語言換成了Python,相對之前使用Scheme的6.001,更強調動手做一些玩具而不是程式設計理論了。

Berkeley CS 61A Summer 2016,使用Scheme。Berkeley非常推崇MIT的SICP,曾經CS61的主講評價SICP是「the best computer science book in the world」,所以Berkeley之前用的也是Scheme。不過新的CS61也換成了Python,然而不同於MIT,Berkeley新的CS61講授的內容結構和SICP基本一樣,只是語言不同,而且仍然保留了Scheme版的SICP作為自學課,就是現在的CS61A。

,使用Scala。這門課Coursera上也開了,所以自學挺方便的。課程結構和SICP很像。

UW Programming Languages CSE341, Autumn 2015,裡面講了各種程式設計正規化,函式式這塊使用了Scheme。如果只是為了了解,可能這種比較式的課程更合適。這門課Coursera上也開了,自學方便。

現在好資源真的很多,要靠自己把握了。自勉一下~

6樓:溫悅

Standard ML入門;

可以去找Coursera的programming languages課程, 裡面有SML的內容,還有racket(一種lisp)的內容,入門可以了

有關函式式程式設計,return語句能否理解成為乙個函式?

據我有限的觀察,我認為 某些語言,乙個函式就是乙個表示式 此類語言多半也同時是函式式的 return確實就是乙個函式,它的返回值是乙個Monad型別類的資料型別。另一些語言,比如Rust,雖然強調一些函式式的風格,但稱不上函式式語言,return是一種流控制語句。 丟貓 函式式語言和函式式程式設計不...

是不是 JavaScript 函式式程式設計的 Pointfree Style 有時會喪失程式可讀性?

胖虎 如果不考慮 this 我認為其實可讀性更高的const aSet new Set someArrary.forEach aSet.add 這本是乙個很適合的例子,但是無法正常執行 因為 add 的 this 指向不正確了 已重置 嘗試用HS 純函式式語言 做了下,與題主的邏輯相同。data P...

函式式程式設計能否解決所有經典的演算法問題?

所有這些計算模型的結果,從某種角度講,都是等價的,而且和泛式的馮諾伊曼機器,即數字計算機是等價的,這也隱含的說明了這樣乙個結果,就是任何乙個系統的結果都可能等價於另乙個系統的結果,而任何乙個系統都可以用另乙個系統來模擬,然後lambda的創始人,Church這位數學家從理論上推想,所有對於計算的描述...