I like that mapcat solution a lot. Very nice. For some reason I can't get the destructuring to work... clearly missing something there.
But fair point on the flatten - I had a play with it, and I can clearly see the issue. Thanks for the extra help. Mark On Tue, Sep 10, 2013 at 2:17 PM, Matt Mitchell <goodie...@gmail.com> wrote: > And also: > > (mapcat identity {:in [1 2 3]}) => '(:in [1 2 3]) > > But yeah, destructuring with *&* then using *apply* is pretty clear too. > > - Matt > > On Monday, September 9, 2013 10:41:12 PM UTC-4, Leif wrote: >> >> Careful - `flatten` recursively flattens sequential things. E.g. >> (flatten (seq {:in [1 2 3]})) => '(:in 1 2 3), which is probably not what >> you want. >> >> You really want `flatten1`, which doesn't exist in core. A version that >> works on maps is >> (apply concat {:in [1 2 3]}) => '(:in [1 2 3]). This appears within >> Alex's solution. >> >> I would personally go with Meikel's solution, though. It seems the >> nicest. >> >> --Leif >> >> On Monday, September 9, 2013 7:02:43 PM UTC-4, Mark Mandel wrote: >>> >>> The solution I've actually gone with is: >>> >>> (apply esd/search es-index mapping-type (-> options seq flatten)) >>> >>> Seems the most consise and shows the intent of what I'm trying to do >>> quite well - better than a (relatively) confusing `reduce` statement. >>> >>> Again, the help is appreciated. >>> >>> Mark >>> >>> >>> On Tue, Sep 10, 2013 at 8:57 AM, Mark Mandel <mark....@gmail.com> wrote: >>> >>>> Thanks for the help all, that gave me some things to think about. >>>> >>>> Cheers, >>>> >>>> Mark >>>> >>>> >>>> On Mon, Sep 9, 2013 at 9:22 PM, Meikel Brandmeyer (kotarak) < >>>> m...@kotka.de> wrote: >>>> >>>>> Hi, >>>>> >>>>> Am Montag, 9. September 2013 12:31:30 UTC+2 schrieb Alex Fowler: >>>>> >>>>>> I would also add that in case, if you *need* to destructure the >>>>>> `options` map for some reason, like: >>>>>> >>>>>> `(defn search >>>>>> "Docstring" >>>>>> [mapping-type & {:keys [option-1 option-2] :as options}] >>>>>> (do-smth-with-option-1 ...) >>>>>> (apply esd/search es-index mapping-type options))` >>>>>> >>>>>> then you can use `mapply` to apply maps to functions that accept >>>>>> optional args maps. The code of mapply is the fllowing: >>>>>> >>>>>> `(defn mapply [f & args] (apply f (apply concat (butlast args) (last >>>>>> args))))` >>>>>> >>>>>> Combining it with partial, as adviced, could give you the >>>>>> functionality you may sometimes need: >>>>>> >>>>>> `(mapply (partial es/search es-index) your-options-map)` >>>>>> >>>>>> >>>>> You don't have to destructure in the argument list: >>>>> >>>>> (defn search >>>>> [mapping-type & options] >>>>> (let [{:keys [option-1]} options >>>>> index (index-based-on option-1)] >>>>> (apply esd/search index mapping-type options))) >>>>> >>>>> Kind regards >>>>> Meikel >>>>> >>>>> -- >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To post to this group, send email to clo...@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+u...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/**group/clojure?hl=en<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+u...@googlegroups.com. >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>> >>>> >>>> >>>> -- >>>> E: mark....@gmail.com >>>> T: http://www.twitter.com/**neurotic <http://www.twitter.com/neurotic> >>>> W: www.compoundtheory.com >>>> >>>> 2 Devs from Down Under Podcast >>>> http://www.2ddu.com/ >>>> >>> >>> >>> >>> -- >>> E: mark....@gmail.com >>> T: http://www.twitter.com/**neurotic <http://www.twitter.com/neurotic> >>> W: www.compoundtheory.com >>> >>> 2 Devs from Down Under Podcast >>> http://www.2ddu.com/ >>> >> -- > -- > 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/groups/opt_out. > -- E: mark.man...@gmail.com T: http://www.twitter.com/neurotic W: www.compoundtheory.com 2 Devs from Down Under Podcast http://www.2ddu.com/ -- -- 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/groups/opt_out.