EoPL reading (125) 2.3 Representation Strategies for Data Types
直前エントリで unify-terms が #f を戻すケイスを列挙してますが、引数リストの cdr がこうなってれば良いのか。ちなみに car は #f を戻さない、というのが基本。
(test* "(unify-terms '((var-term x) (var-term a)) '((var-term y) (app-term ((var-term a)))))" #f (unify-terms '((var-term x) (var-term a)) '((var-term y) (app-term ((var-term a)))))) (test* "(unify-terms '((var-term x) (app-term ((var-term a))) ((var-term y) (var-term a))))" #f (unify-terms '((var-term x) (app-term ((var-term a)))) '((var-term y) (var-term a)))) (test* "(unify-terms '((var-term x) (constant-term 1)) '((var-term y) (constant-term 2)))" #f (unify-terms '((var-term x) (constant-term 1)) '((var-term y) (constant-term 2)))) (test* "(unify-terms '((var-term x) (constant-term 1)) '((var-term y) (app-term ((var-term a)))))" #f (unify-terms '((var-term x) (constant-term 1)) '((var-term y) (app-term ((var-term a)))))) (test* "(unify-terms '((var-term a) (app-term ((var-term x)))) '((var-term b) (constant-term 1)))" #f (unify-terms '((var-term a) (app-term ((var-term x)))) '((var-term b) (constant-term 1)))) (test* "(unify-terms '((var-term a) (app-term ((var-term x)))) '((var-term b) (var-term s)))" #f (unify-terms '((var-term a) (app-term ((var-term x)))) '((var-term b) (var-term x))))
これはある意味体力勝負ですな。がしかし、ここから先が正に汗をかくナニ。
ちょい gdgd 気味なので整理が必要かな。