You might want to look at s/multi-spec which lets you create a variable 
open spec based on a multimethod, which would in this case be based on key 
availability.


On Wednesday, September 13, 2017 at 11:54:31 AM UTC-5, Brent Millare wrote:
>
> I have several maps with different combinations of keys for each map. I 
> want to process each map but do different work depending on the set of keys 
> available, basically dispatch on key availability. I thought clojure.spec 
> might be a good fit for doing the classification step. So for each key, I 
> could define a spec. Next, I would use clojure.spec.alpha/keys to define a 
> spec for each set of keys I'd like to match. Finally, I would dispatch like 
> so:
>
> (fn [m]
>   (condp clojure.spec.alpha/valid? m
>       ::foo-map-spec :do-foo-stuff
>       ::bar-map-spec :do-bar-stuff))
>
> Does this seem reasonable?
>
> The advantage in my mind is its thorough, explicit, and easy to read. 
> Possible downsides is performance if it mattered.
>
> What are the advantages/disadvantages to this approach compared to other 
> methods?
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to