
Functional Programming (FP) 是一個全新的 programming paradigm,OOP 是一種 programming paradigm,procedural language 也是一種。
想精通 FP,必須理解數學的 Category Theory。這樣就會了解,為什麼會有 map, flapMap 等這些 functions。它們各自對應到 Category Theory 裡面的數學詞彙。
大家有看過有人寫出來的 Java 程式,跟 C 沒什麼兩樣嗎?因為寫的人不了解 OOP 背後的精神。同理,很多人寫出來的 Scala 程式,充滿了 OOP 的風格,因為寫的人不明白 FP 背後的原理。
總結,FP 不好學,因為要從 OOP 的 paradigm 轉換到 FP 的 paradigm,那是 mental model 的轉變,不僅止於「語法」的轉換而已。