練習問題 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)