Unification Code ...
; unify lists of arguments
; lists must be of same length
(defn unifyc [args1 args2 subs]
(if (empty? args1)
(if (empty? args2)
subs) ; return subs, else fail
(and args2 subs
(let [newsubs (unifyb (first args1)
(first args2) subs)]
(if newsubs
(unifyc (sublis newsubs (rest args1))
(sublis newsubs (rest args2))
newsubs))) ) ) )