HI, I'm looking for functionality like the "featurec" function, but I need
to be able to capture the unused keys.
Here is how "featurec" currently works:
(run* [q]
(== q {:a 1 :b 2})
(featurec q {:b 2})))
==> ({:a 1 :b 2})
However, I need to capture the keys that a not part of the "feature
requirement". It seems this could be handled via another parameter to
featurec (or via an extra, similar command) What I want to be able to write
is something like this:
(run* [q p]
(== q {:a 1 :b 2})
(my-featurec q {:b 2} p)))
==> ([{:a 1 :b 2} {:a 1}])
In this case, it puts all kv pairs not in the feature check (in this case
just ":a 1") in a separate variable.
Is there any other way I can achieve this functionality? Is this a command
that would be valuable for me to write/issue a pull request for? I don't
know core.logic well enough to know whether this is a worthwhile endeavor.
RATIONALE
Since the likely next question will be "why do you need to do this?", let
me explain the problem I'm trying to solve... I'm creating a DSL that can
operate against nested maps to perform transformations. A simple example of
the DSL would look something like this:
{:b ?x & ?y} --> {:b 77 & ?y}
So this statement would say "Find the value assigned to the key ':b' and
overwrite it with '77' - Leave the rest of the map unchanged". The part at
the end "& ?y" grabs all remaining kv pairs (Or "reconstitutes" them, in
the second "results" map). For instance, if you applied this rule against
the following:
{:a 3 :b 4 :c 5}
It would return this:
{:a 3 :b 77 :c 5}
Anyway, thanks for any pointers!
--
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