學習 monad
這兩天才花時間把 Learn You a Haskell for Great Good 關於 monad 的章節大概掃過一次,只能說自己不太會使用 monad,感覺上很像 Josh 很久很久以前在 blog 上說的話:
我現在對 Haskell 的感覺很奇特,有點熟又不太熟,會的部分都是靠著唸理論(而不是練習)而學起來的。
稍微列一下關於 monad 的文章,只列出我有印象的 XD。
- Josh Ko 的 blog (出門左轉搜尋)
- godfat 的 blog (出去右轉搜尋)
- 小眾計算學
- 大貓共和國
- Jaiyalas 推薦的兩篇文章
- http://haskell.cs.yale.edu/wp-content/uploads/2013/03/HSoM.pdf
- http://www.haskell.org/haskellwiki/Typeclassopedia
- 什么是函数式语言 — 王垠
因為我數學不太好(我到現在還是沒看 category theory),我所了解的 monad 是在解決如何儲存狀態的問題。如果要寫一個真正的程式,多個 monad 的結合勢必是要
處理的,而我所看到的文章皆提及了 monad transformer,我想可能要等到繼續看下去才會有所辦法就是了。
很多小程式其實只需要用到簡單的 IO 概念,把 do block 裡面視為一個 imperative program 來寫,再加上 pure function 的概念就可以解決了。再進階一點可以是 IO monad + state monad 來解決,再下去我就得要繼續學習跟看書了。
其次在王垠在他的 blog 中提到 monad 這個概念的種種問題,想到與 Josh 跟我提及的話,programer 必需了解程式中每一個狀態的轉換,想法大異其趣。王垠最近寫了很多關於 Lisp 及 Scheme 的文章,忽略掉文章中的情感,他的文章是值得一讀的。
這幾年反反覆覆的學習又放棄 Haskell,不過現在的我還是想要繼續堅持的學到一個段落就是了。
---
繼續看書去。