Continuation monad (2)
忽然間覺得 Cont 跟 callCC 有點像 @@"
這次我沒跳入細節裡,直接拿 ghci 亂玩一通,
我發覺這種作法好像比較適合我?從錯誤中慢慢歸納出正確。
先是搞不懂 when 在搞什麼。因為如果一定是 m () 的話,
不就所有值都吃不到嗎??先是寫成:
runCont (Cont (\exit -> do{ when True (exit "1"); return () }))
很困惑 when 後面好像只能寫 return () ?
但是 >> 不是 m a -> m b -> m b 嗎?
為什麼一定要跟著 when 一起用 unit?
而且 runCont 的第二個 argument 一直不能丟 id...
然後把 Cont 改成 callCC 就完全符合預期了 @@"
也許應該試著展開一次。不過他範例好複雜,最深到四層的 do,
展開會超級大吧... 應該弄個簡化版再展開試試。似乎需要紙筆?
==
忽然覺得讀 monad 是條有點漫長的路...
似乎不是可以頓悟的?或是說我還抓不到那個味道?
因此現階段只能一個個看,而不能把所有的事看成同一種?
==
還有我發現我很討厭 $, 這很妨礙思考... 中間還有一段一直寫錯,
也是因為搞錯 $ 的順序 :/ 還是加括號比較容易思考...
而且是為什麼要用這個符號啊?
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.