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 気味なので整理が必要かな。