On Wed, 24 Nov 2010 00:37:07 -0800 (PST)
LauJensen <[email protected]> wrote:
You just touched on an idiom I see fairly often here that bugs me. I'm
not intentionally singling you - or CQL! - out for this, but you made
a comment that sets up my question perfectly.
> (let [photo-counts (-> (table :photos)
> (aggregate [[:count/* :as :cnt]] [:id])))]
> (-> (table :users)
> (join photo-counts (= {:users.id :photos.id}))
>
> I think thats really as simple as you can express that join operation.
Um, I can see two macros that, if expanded in place, would result in a
simpler expression (assuming that CQL doesn't redefine ->):
(let [photo-counts (aggregate (table :photos) [[:count/* :as :cnt]] [:id])]
(join (table :users) photo-counts (= {:users.id :photos.id})))
I also fixed the parens - I think. I removed one after [:id], and it
seems like two were missing at the end as well.
Ok, I understand why you would use -> if you're threading through
multiple forms. I don't know that I like it, but I can at least
understand it. But when it's only one form? In the best case - when
the form is a symbol, as in (-> 1 inc) - it just wastes three
characters to reverse the form and argument. More often - for example
(-> 1 (+ 2)) - it also adds another level of parenthesis, which I
thought most people considered a hindrance to comprehension.
Could someone explain where this urge to write (-> expr (func arg))
instead of (func expr arg) comes from?
<mike
--
Mike Meyer <[email protected]> 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 [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