プログラミング Haskell 第10章 型とクラスの定義 その4
今日は Monad クラスの説明を読みました。
- Monad もただの型クラス(ただし do 記法など特別扱いされてるところも)
- 以下の2つのメソッドを実装する
- return :: a -> m a
- (>>=) :: m a -> (a -> m b) -> m b
ついでに練習問題の最初のほうをやってしまいます。
- 1.
mult :: Nat -> Nat -> Nat mult Zero _ = Zero mult _ Zero = Zero mult (Succ n) m = add m (mult n m)
- 2. これが元の実装よりも効率的な理由というのがわかりませんでした。元も二分探索しているし。
occurs :: Int -> Tree -> Bool occurs n (Leaf m) = (compare n m) == EQ occurs n (Node l m r) = case compare n m of LT -> occurs n l EQ -> True GT -> occurs n r