[scheme]0の0乗が1に成る理由

問題 2.6

Chruch数に一日はまっていたのだが、0の0乗(0^0)が1に成る理由もChurch数の定義からちゃんと説明できるのね。

(define zero
  (lambda (f)
    (lambda (x) x)))

(define (inc x) (+ x 1))

(define (pow num1 num2)
  (num2 num1))

(((pow zero zero) inc) 0)

これで、

(((pow zero zero) inc) 0)

とすると、ちゃんと1が答えとして帰ってくる。
なんでそうなるのかわかるまで、半日かかったよ。

1という数字が出て来るのはincの定義の中だけ。この数値が答えとして帰っているのだが、このincの定義は、「1増やす」と宣言していると考えるよりは、「1を自然数の1単位とする」と宣言しているととらえた方がわかりやすいかもね。


ちなみに問題2.6の解説は、こちらが詳しいです。