[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の解説は、こちらが詳しいです。