(defun variables-in (exp) (unique-find-anywhere-if #'variable-p exp)) (defun unique-find-anywhere-if (predicate tree &optional result) (cond ((atom tree) (if (funcall predicate tree) (adjoin tree result) result)) (t (unique-find-anywhere-if predicate (first tree) (unique-find-anywhere-if predicate (rest tree) result)))))
<cl> (variables-in '(<- (carnivore ?x) (human ?x) (eat ?x meat))) (?X)