This is something that zeta
will support, being able to use m/or
on the right. epsilon
could be retrofitted to do it but I’m not sure how long it would take in terms of implementation, testing, and supporting.
(m/rewrite {:a 1 :b 2}
{:a ?a :b ?b :c ?c}
{:a ?a :b ?b & (m/or (m/project ?c nil {}) {:c ?c})})
;; => {:a 1, :b 2}
(m/rewrite {:a 1 :b 2 :c 34}
{:a ?a :b ?b :c ?c}
{:a ?a :b ?b & (m/or (m/project ?c nil {}) {:c ?c})})
;; => {:a 1, :b 2, :c 34}
Also, I didn’t get a chance on Friday to look at the $*
and wasn’t feeling well over the weekend so I’m going to try and find time this week.