練習問題 3.1.3

1つめの引数上のパターン照合を使って
および
×
を定義せよ.同様に
を定義できるか.



(+) :: Nat -> Nat -> Nat
Zero     + n = n
(Succ m) + n = m + Succ n

(×) :: Nat -> Nat -> Nat
Zero     × n = Zero
(Succ m) × n = m × n + n
については2つめの引数上で再帰的に定義するので,2つめの引数のパターン照合が必要である.


(↑)          :: Nat -> Nat -> Nat
m ↑ Zero     =  Succ Zero
m ↑ (Succ n) =  m × (m ↑ n)