On Wed, 24 Nov 2010 00:37:07 -0800 (PST)
LauJensen <lau.jen...@bestinclass.dk> 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 <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

Reply via email to