On Feb 11, 4:34 pm, Timothy Pratley <timothyprat...@gmail.com> wrote:
> On 12 February 2010 03:19, Martin Hauner <martin.hau...@gmx.net> wrote:
>
> > I'm mostly interested if there is anything in my code one would/should
> > never do that way.
>
> Looks excellent, you've aced it!
>
> I'd like to discuss switching...You wrote:
>
> (cond
>   (empty? rolls)     0
>   (strike? rolls)    (+ (score-strike rolls) (score-after-strike rolls))
>   (spare?  rolls)    (+ (score-spare rolls)  (score-after-frame rolls))
>   (more?   rolls)    (+ (score-frame rolls)  (score-after-frame rolls)))
>
> Which is correct and very readable.
>
> If I wanted a DRYer expression:
> (condp #(%1 %2) rolls
>   empty?     0
>   strike?    (+ (score-strike rolls) (score-after-strike rolls))
>   spare?    (+ (score-spare rolls)  (score-after-frame rolls))
>   more?    (+ (score-frame rolls)  (score-after-frame rolls)))
>
> But the #(%1 %2) is ugly and not immediately obvious how it works.
> Would it be any nicer if we defined a function-name?
> or made a switchp which hides that part?
> Or use a trick:
> (condp apply [rolls]
>   ....
>   ....)
>
> I've found myself faced with this particular DRY vs clear trade-off
> and never been sure what to do!
>
> Regards,
> Tim.

And the minute you change cond to be more terse someone will decide
that one of the conditions needs to factor in some other param, thus
breaking the pattern.  ;)

-- 
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