(conjo coll & args)
A constraint version of conj
(use 'clojure.core.logic)
;; Like conj, but result is the last argument
(run* [q] (conjo [1 2 3] 4 q))
;;=> ([1 2 3 4])
(run* [q] (conjo [1 2 3] 4 5 6 q))
;;=> ([1 2 3 4 5 6])
(run* [q] (conjo {:a 0} {:a 123 :b 345} q))
;;=> ({:a 123, :b 345})
;; Partially relational:
(run* [q] (conjo [1 2] q [1 2 3]))
;;=> (3)
;; but the same doesn't work for maps
(run* [q] (conjo {} q {:a 1}))
;; java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core.logic.LVar
;; This case works:
(run* [q] (conjo {} {:a q} {:a 12345}))
;;=> (12345)