Monad, 紙巾包 和 托爾的龍角

今天晚上隨便寫寫 OCaml 啊用到一個 json 庫。

裡面的 get 方法竟然是用 Try/Raise except 而不是返回 Option

一邊嘆氣一邊想著果然得自己實現 get_wrapper 自己封裝 Option 之類的。。

然後又想到之後可能得再用一個Option 做轉其他類型的解析。

無聊去洗澡。

洗澡時想到兩層 Option 處理好麻煩啊要是有 Monad 就好了。

又想人果然是賤啊明明拋棄了 Haskell 到頭來又想著用 Monad.

沒有 Monad 的時候要是遇到了諸如 getUsername, getPassword 這樣連調兩次Option 系方法的時候會不會略麻煩。

對啊,明明 Maybe 就是一個很好的 Monad example, 為什麼 講 Monad 時偏偏要用 IO 去講呢。兩個 Maybe 疊加在一起的快樂,明明是雙份的快樂。。

Maybe 里套 Maybe, 裡面在套 Maybe

不知怎的就想到了 《小林家的妹抖龍》op 裡面托兒那個龍角分形。

好像似乎理解一點了。

洗完澡回來某S老司機說其實可以直接用 flatMap 實現啊。

我想想,為什麼不是類似 fold 的東西呢。

忽然想到 Maybe 是不是 foldable 的類型啊

就像面巾紙那樣。 每一個 Maybe 都是一個 面巾紙, 把這兩張面巾紙 像紙巾包里那樣捲曲折起來,兩邊各露一半,就 fold 起來了。

奇怪的夜晚。

推薦閱讀:

Coq學習筆記11:策略和證明自動化
[公告] Idris-zh 中文翻譯項目啟動
函數式編程,Haskell,範疇論的關係
想學函數式編程? - 收藏集 - 掘金

TAG:編程 | 函數式編程 |