(defrelmacro append3 (x y z w)
(let ((iv (make-internal-var)))
`(and (append ,x ,y ,iv)
(append ,iv ,z ,w))))
==> (append3 (1) (2) (3) ?y)
?Y = (1 2 3)
KnowledgeWorks and Prolog User Guide (Windows version) - 26 Feb 2015