Hi,

readability might be a concern but it's not the only criteria.

a) Do you need to trace intermediate results ? Then you need a
   binding so you do not redo the work twice (presumably, I exclude memoized
   functions here). Of course if the code has some side effects, the choice
   is obvious, you do not want the tracing to redo the side effects twice...

b) Do you need to reference intermediate results in a closure ?
   Then you need local bindings of course.

c) If a huge form becomes difficult to read then using local bindings will 
   enhance readability.

a) & b) might not be immediately obvious choices while writing the code.
They may arise later as you test/debug the code.

You may create bindings first to reflect logical chunks and then remove
them later if not needed.

I find it easier to add local bindings and removed when the code is stable
than vice-versa (but that could be an effect of aging, my brains maybe
getting slower along the way to terminal city :)))

Luc P.

Alan <a...@malloys.org> wrote ..
> I agree with Tom (and with Stuart). I tend to like using ->> when it's
> convenient, since all you're really doing is performing a list of
> transformations on a single object. However, the let is better
> documentation if that's ever going to matter. Not because it makes it
> easier to understand what operations are being performed - ->> is just
> as good at that - but because you assign names to the intermediate
> results. Then someone reading your code can see what the purpose of
> each transformation is, without having to look at the definition of
> other functions.
> 
> On Oct 19, 11:41 pm, Tom Faulhaber <tomfaulha...@gmail.com> wrote:
> > Dave,
> >
> > Yes, this is perfectly idiomatic and many people in Clojure (and also
> > Haskell, for example) use let to help document how they're building up
> > their computation.
> >
> > Stuart's suggestion is also good and it's largely a matter of personal
> > preference which to use when.
> >
> > Of course, as you use clojure more, you'll probably become more
> > comfortable with more complex statements and not use the let style
> > quite so much.
> >
> > Tom
> >
> > On Oct 19, 8:19 pm, Dave Ray <dave...@gmail.com> wrote:
> >
> > > Hey,
> >
> > > I'm parsing a file with a chain of filter and map operations. To make
> > > it a little more readable (to me), I put the steps in a let like this:
> >
> > > (defn parse-dictionary
> > >   [reader]
> > >   (let [lines    (read-lines reader)
> > >         trimmed  (map #(.trim %1) lines)
> > >         filtered (filter is-dictionary-entry? trimmed)]
> > >      (map parse-entry filtered)))
> >
> > > Is this style of let considered good/bad stylistically? Are there
> > > technical tradeoffs between this and a bunch of nested forms?
> >
> > > Thanks!
> >
> > > Dave
> >
> >
> 
> -- 
> 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

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