深入淺出 Monad Laws
Monad 遵循 3 個 Monad Laws,專門描述 >>=
的 3 個特性。
失くすものさえない今が強くなるチャンスよ
Monad 遵循 3 個 Monad Laws,專門描述 >>=
的 3 個特性。
Functor 遵循 2 個 Functor Laws,專門描述 map
的 2 個特性。
cycle
能產生無限 List 看似無用,但與 zip
搭配卻產生有趣化學反應。
若想根據特定 Pattern 建立無限 List,可使用 cycle
實現。
zip
為 FP 代表性 Function,可直接將兩個 List 合併成 List Pair。
若想取得 List 最後幾筆資料,Haskell 並沒有內建 takeLast
,可自行使用 reverse
與 take
組合。
若想取得 List 前幾筆資料,可直接使用 take
取得。
若想判斷 Value 是否在 List 內,可直接使用 elem
判斷。
若要將 List 顛倒,可直接使用 reverse
。
若要取得 List 的長度,可直接使用 list
。
Haskell 獨特的 !!
Operator,可根據 Index 讀取 List,甚至支援 Partial Application。
Haskell 獨特的 ..
Operator,可根據條件建立 List。
Haskell 獨特的 ++
Operator,可將 List 或 String 加以合併。
Haskell 獨特的 :
Operator,可將 Value 與 List 加以合併。
Haskell 提供多種 Operator 組合 Function,可視需求與可讀性選擇使用。
Function 為 Haskell 最重要元素,所有功能都由 Function 展開。
目前幾乎主流語言都或多或少提供 FP,但由於各語言有各自包袱,因此都只能提供妥協後方案,初學者卻很難發現其 FP 精神;也由於 Imperative 與 OOP 寫法仍保留,很容易不知不覺又使用 Imperatve 與 OOP 思考,因此我們需要一個 Pure Functional 語言重新格式化腦袋。
Haskell for Mac 為 macOS 上的 Haskell IDE,將環境設定成 JetBrains 的 Darcula Theme 配色。
sortBy
也是代表性 Higher Order Function,可自行傳入 Comparator Function 明確指定該如何比較與排序。
Haskell 支援 First Class Function,所以可將各 Function 相同部分抽成 Higher Order Function,不同部分亦抽成小 Function,最後以 Argument 傳入產生各 Function。
Haskell 強調 Immutable,重新定義 Variable 實務上甚少使用,但因為很特別,所以加以記錄。
在 Haskell 中的 Variable 因為是 Immutable,所以算是 Definition,由於 Haskell 支援 First Class Function,因此 Variable 也能是 Function。