I can do this with core.logic (yes, I know that match-list isn't doing
anything much here)
(defn match-list [member list]
(membero member list))
(run* [q]
(match-list 10 [1 10 100])
(== q "worked"))
For q to come back with any values then 10 has to be part of the list [1
10 100].
I want to do the same thing where the second argument is a list of
lists. So something like:
(defn match-lists [member lists]
(map
(fn [l] (membero member l))
lists))
(run* [q]
(match-lists 10
[[1 10 100]
[1 10 100]])
(== q "worked"))
which should also return "worked". The point is that I don't know how
many "membero" forms I need at compile time, only at runtime. My initial
attempt above fails.
java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to
clojure.lang.IFn
at clojure.core.logic.Substitutions.bind (logic.clj:410)
logic_expts.what_i_want$eval7021$fn__7022$fn__7023$_inc__7024.invoke
(form-init238773086654203315.clj:2)
clojure.core.logic$eval5780$fn__5781$fn__5782.invoke
(logic.clj:1109)
Is there a way to do this with functions -- or do I need to macro it?
Phil
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.