補充 想當然爾,那些Reader(我還以為第30天會提)、Writer、State monad等我們通常不會自己實作,它們都放在transformers和mtl...
請問老師~ 既然newtype可以拿來包裝某個既有的type,那這樣為什麼不直接用data就好了? newtype限制還一大堆,什麼只能有一個value con...
補充 Monad自base 4.13.0.0之後便將fail移至MonadFail這個type class裡,詳情可看MonadFail Proposal
雖然與Applicative無關,但我們也可以利用Maybe及Int加法具有Monoid的特性來換個方式實作addMaybe。 import Data.Coer...
補充 Fixity 優先順序0為最低、9最高,預設的fixity為infixl 9 Precedence Left associative operato...
補充 一般來說不太會用foldl,而會使用strict的版本foldl',foldl會在acc上不斷累積thunk,這在處理很大的list時讓你的記憶體爆掉。...
補充 不要使用partial function 所謂的partial function就是傳入某些合法的值卻回傳bottom的function。合法的值指這個f...
補充 Haskell的type system非常嚴格,不同的type就是不同的type,某個function如果需要Foo type的參數,你就絕對不可能傳一個...
可以考慮把拋出例外和捕捉例外分成兩件事來看待,假如你的function只有依賴input但有可能拋出例外的話,這個function仍舊是pure functio...