(llist f s) (llist f s & rest)
Constructs a sequence from 2 or more arguments, with the last argument as the tail. The tail is improper if the last argument is a logic variable.
(run* [q]
(fresh [a d]
(== [1 2 3 4] (llist a d))
(== q d))) ;; ((2 3 4))
(run* [q]
(fresh [a d r]
(== [1 2 3 4] (llist a d r))
(== q r))) ;; a=1, d=2, r=(3 4)