Reader Monad
看這一頁
The Reader monad
寫了個無聊的東西測試:
test :: Reader String Int
test = Reader read >>= \i -> return (i + 10) >>= \i -> return (i * 2)
跑 runReader test "150" 得到 320 :: Int
等價於
test' :: Reader String Int這裡應該可以很明顯地看出 return 與 imperative language 裡的
test' = do
i <- Reader read
ii <- return (i + 10)
return (ii * 2)
return 是完完全全不一樣的。或許可以想成是一種 base constructor?
前幾天大概看了 List Monad 和 Maybe Monad,
感覺 monad 在基本概念上很簡單,但是組合起來變化很多,
看似簡潔的程式,背後其實透過 monad 的機制,是非常繁複的。
可以理解為什麼這邊是一個門檻,完全搞懂的話,可以做很多事。
simple and abstract :/
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.