EoPL reading (127) 2.3 Representation Strategies for Data Types

昨晩の懇親会開始待ちで検討したナニです。。直前エントリの続きです。スデに呑み屋の中。一人でビール呑みながらノート開いてるさまは微妙にちがいない。
まず t が var-term のケイス。

  • u が var-term だと unit-subst 呼び出し
  • u が var-term 以外だと
    • u が constant-term だと unit-subst 呼び出し
    • u が app-term でその中に t の id が含まれてなければ unit-subst 呼び出し

上記を試験で表現してみると以下?

(test* "(unify-term '(var-term x) '(var-term y))"
       (extend-subst 'x (var-term 'y) (empty-subst))
       (unify-term '(var-term x) '(var-term y)))
(test* "(unify-term '(var-term x) '(constant-term 1))"
       (extend-subst 'x (constant-term 1) (empty-subst))
       (unify-term '(var-term x) '(constant-term 1)))
(test* "(unify-term '(var-term x) '(app-term ((var-term y))))"
       (extend-subst 'x (app-term ((var-term 'y))) (empty-subst))
       (unify-term '(var-term x) '(app-term ((var-term y)))))

続きは別途。