Exercise 2.11 (2)

またまたちょっとだけ。
設問の記述に沿って試験を書いてみます。

(use gauche.test)
(add-load-path ".")
(load "lambda-calculus-subst")

(test-start "lambda-calculus-subst")
(test-section "lambda-calculus-subst")
(test* "occurs-bound"
       '(lambda (p0) (+ p0 (* p 3)))
       (lambda-calculus-subst '(lambda (p) (+ p x))
			      '(* p 3)
			      'x))

(test* "occurs-free"
       '(lambda (q) (+ q (* p 3)))
       (lambda-calculus-subst '(lambda (q) (+ q x))
			      '(* p 3)
			      'x))

(test-end)

なんか微妙ですがご容赦下さい。

ぐげ

lambda 式は例のアレな記法になってないと駄目なのか。あと subst な手続きで prim-app な式が追加になってるので expression.scm に追加が必要。ちょい時間切れ気味なので TODO 列挙して次につなげます (ぇ

  • 渡すものと戻ってくる式は expression な S 式なので試験の修正が必要
  • lambda-expression-subst で primapp-exp なる要素が追加になっているので expression.scm と fresh_id.scm の修正が必要
  • と思ったら lexical-address と expression が混在してます (とほほほ

これ、ナメて片手間にやるとヤバいのかも。