理系学生日記

おまえはいつまで学生気分なのか

問題1-5

(define (p) (p))

(define (test x y)
  (if (= x 0)
     0
     y))

があるときに

(test 0 (p))

はどうなるか。


正規順序の評価(normal-order evaluation)では、第一ステップとして完全に展開(しようと)するので

(test 0 (p))

に対して(p)を展開しようとするけど、(p)は(p)となるようなトートロジーな感じなので、展開は無限ループに陥る。


作用的順序の評価(applicative-order evaluation)では、最初から簡約を狙うので、(p)なんか見ずにif分岐条件が成立していることでとっとと0を返す。という感じの結果をBenはみる!