Category Archives: 函數編程簡介

單子 (monad) 入門(二)讀取單子

一個算式的語意成了「拿一個環境,傳回一個整數」的函數。的確,既然算式算成的那個整數必須由環境決定,算式其實不能看作一個數子,而應該是從環境到整數的函數才對。

Also posted in 計算算計 | Tagged , , | 10 Comments

單子暖毛毛

Haskell 唯一的大錯誤,Simon Peyton Jones 說,是「單子」這冰冷生硬的數學名詞把人嚇跑了。我們應該把它取名為「暖毛毛(warm, fuzzy thing)」之類的。

Also posted in 計算算計 | Tagged , | Leave a comment

單子 (monad) 入門(一)

函數 return 把一個型別為 a 的值「提升」到 m a;x >>= f 大致上的意思是執行 x 代表的運算,如果得到一個型別是 a 的值,把他傳給 f. 結果的型別是 m b.

Also posted in 計算算計 | Tagged , , | 11 Comments

關於函數編程(三)摺疊-映射融合定理

函數語言程式有比較好的數學性質,我們可用來對程式做各種推論和操作。

Also posted in 計算算計 | Tagged , | Leave a comment

關於函數編程(二)摺疊與抽象化

三個函數都同樣地把串列從左至右走訪一遍,差別僅在碰到串列結尾時分別傳回不同的值,並用不同的運算元處理遞迴呼叫的結果。我們能不能讓這三個函數共用同一個定義呢?

Also posted in 計算算計 | Tagged , | 3 Comments

關於函數編程(一)On Functional Programming

由指令語言的觀點看函數語言,注意到的第一件事情是「函數語言裡面不可以改變數的值」。於是大家難免覺得奇怪,這怎麼會是個優點呢?自廢武功去掉一個功能,會有什麼好處呢?

Also posted in 計算算計 | Tagged , | 1 Comment