Skip to content

Instantly share code, notes, and snippets.

@ryohji
Last active July 4, 2019 15:44
Show Gist options
  • Save ryohji/5e4927cab27f352a555b81bc3253c54c to your computer and use it in GitHub Desktop.
Save ryohji/5e4927cab27f352a555b81bc3253c54c to your computer and use it in GitHub Desktop.
計算機プログラムの構造と解釈 第二版 問題 2.6

問題 2.6

対を手続きで表現することがそれほどの驚きでなければ,手続きを操作出来る言語では,0 と, 1 を足す演算を

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

(define (add-1 n)
 (lambda (f) (lambda (x) (f ((n f) x)))))

と実装することで,(少なくとも非負の整数だけを問題とする限りは)数を使わないで済せることが出来ることを考えよう.この表現は発明者 Alonzo Church(λ算法を発明した論理学者)に従い, Church 数 (Church numerals)として知られている.

zeroadd-1 を使わずに)onetwo を直接定義せよ.(ヒント: (add-1 zero) を評価するのに,置換えを使おう.)

add-1 の繰返し作用させず)加算手続き + を直接定義せよ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment