(wat-aro)

無職から有職者にランクアップしました

SICP 問題 4.15

;; 引数の手続きpとオブジェクトaについて,式(p a)停止するかどうかを正確に判断するような手続きhalts?
(define (run-forever) (run-forever))

(define (try p)
  (if (halts? p p)
      (run-forever)
      'halted))

(try try)

;; まずこれが停止すると仮定する.すると(halts? try try)はtrueを返し,then節(run-forever)を実行するので停止しない.
;; 次にこれが停止しないと仮定する.(halts? try try)がfalseなのでelse節'haltsが実行されるので停止する.
;; 矛盾するのでhalts?は定義できない.