> #[[[[%3 %2 %1][%4 %5 %6]]] signal] -> [c b a d e f] Right, the names are superfluous. So are the extra set of brackets I guess. Perhaps even better would be:
(#[[_ _ _][_ _ _]] signal) Or if you wanted just the third item of the second collection: (#[[][2]] signal) Also, I took the signal out of the #[...] form and passed it in as an argument instead. No, it is not as flexible as let, but it eliminates having to duplicate a b c d e h, etc. I am going to see if I can write a function that does: => (destructure [[][2]] signal) (5 6 7 8) Or would it have to be a macro? John On Sat, Aug 28, 2010 at 2:55 PM, Mike Meyer <m...@mired.org> wrote: > On Sat, 28 Aug 2010 12:23:04 -0400 > John Newman <john...@gmail.com> wrote: > >> A reader macro for destructuring might be nifty, like #[...]. > > I don't think so. > > But first, we already have an "on-demand" destructuring facility: let. > >> So you could do things like: >> >> (#(map (partial reduce +) #[[[[a b c][d e f]]] %]) signal) > > which would be > > (#(map (partial reduce +) (let [[[[a b c][d e f]]] %] [a b c d e f])) signal) > > But using let allows you to put the destructuring first, which I > think is a bit easier to read: > > (#(let [[[[a b c][d e f]]] %] (map (partial reduce +) [a b c d e f])) signal) > >> Not sure if that'd be the right syntax, but you get the point. > > I think so. It's sort of like fn and #(, only "backwards". #( lets you > elide the argument list by creating implicit names for them, so it's > as flexible as fn and a bit shorter. #[, on the other hand, elides the > body part of the let, just giving you back the list. This isn't nearly > as flexible as let, since all you get is a list, with no chance to > plug the values into an expression where they'll do the most good. > > Another issue: What does this mean: > > #[[[[a b c]]] (first signal) [[[d e f]]] (second signal)] > > And finally, the names (a, b, etc.) are pointless. Why not just call > them %1, %2, %3 so that you could do: > > #[[[[%3 %2 %1][%4 %5 %6]]] signal] -> [c b a d e f] > > Except then you have to worry about #[[%1 %1 %2] value], so maybe just > make them all %? > > <mike > -- > Mike Meyer <m...@mired.org> http://www.mired.org/consulting.html > Independent Network/Unix/Perforce consultant, email for more information. > > O< ascii ribbon campaign - stop html mail - www.asciiribbon.org > -- 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