As a complete clojure newbie (hi folks!) from a Ruby/Java background,
I kind-of don't like either - I'd pull out a named function like:
(def add-mix-and-beat [bowl, dry-ingredients wet-ingredients] ...
and then use your second example, but now it's:
(def make-cookies-2a [flower baking-soda salt button sugar eggs]
(bake (make-dough-balls
(find-baking-sheet)
(add-mix-and-beat (find-bowl) '(flower baking-soda
salt) '(eggs flour)))
- I'm trying to follow the "if it does more than 7 things, it's too
complex" model.
(Apologies if my syntax is broken - I'm still completely new to
lisp/clojure (ok, I did lisp at uni, but that's an embarrassingly long
time ago!))
- Korny
On Thu, Jan 8, 2009 at 8:17 AM, Mark Volkmann <[email protected]> wrote:
>
> On Wed, Jan 7, 2009 at 3:05 PM, Tom Ayerst <[email protected]> wrote:
>> Honestly? The second one, but I did say I didn't like the 'big let' style,
>> maybe that is why.
>
> I think I may be in the minority on this. I suspect there are more
> people currently using Clojure who came to it from a Lisp background
> than a Java background. I had exposure to Lisp in college, but that
> was a long time ago. My recent experience has been more with Java and
> Ruby. Maybe that's why I find deeply nested function calls difficult
> to read. After three or four levels of nesting, the code is no longer
> obvious to me. The second option below is six levels deep.
>
>> Cheers
>>
>> Tom
>>
>> 2009/1/7 Mark Volkmann <[email protected]>
>>>
>>> On Wed, Jan 7, 2009 at 3:13 AM, Tom Ayerst <[email protected]> wrote:
>>> > Hi Mark,
>>> >
>>> I agree they could be inlined, but I find that style easier to read.
>>> For example, these are equivalent.
>>>
>>> (defn make-cookies-1 [flower baking-soda salt button sugar eggs]
>>> ; let describes the step-by-step process for making cookies.
>>> (let [bowl (find-bowl :small)
>>> bowl (add-ingredients bowl flower baking-soda salt)
>>> batter (mix bowl)
>>> batter (add-and-beat batter eggs flour)
>>> baking-sheet (find-baking-sheet)
>>> baking-sheet (make-dough-balls baking-sheet batter)]
>>> (bake baking-sheet)))
>>>
>>> (def make-cookies-2 [flower baking-soda salt button sugar eggs]
>>> (bake (make-dough-balls
>>> (find-baking-sheet)
>>> (add-and-beat (mix (add-ingredients (find-bowl) flower baking-soda
>>> salt) eggs flour))))
>>>
>>> Which of these is easier to understand?
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> >
>
--
Kornelis Sietsma korny at my surname dot com
kornys at gmail dot com on google chat -- kornys on skype
"Every jumbled pile of person has a thinking part
that wonders what the part that isn't thinking
isn't thinking of"
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---