You can also do stuff in the middle of a let;
(let [a vala
b valb
_ (do-something-with a b)
c (some-fn a b)
d (some-fn a b)
_ (do-something a b c d)
e (fn ...)
f (fn ....)]
(and-whatever-else))
Here _ is just some arbitrary unused variable.
Note that you can also reuse existing variables which sometimes make
things clearer;
(let [a (some...)
a (if something x y)]
(some... a))
-Rgds, Adrian.
On Fri, Feb 26, 2010 at 2:28 AM, kuniklo <[email protected]> wrote:
> One of my least favorite things about common lisp was the degree of
> nesting it required for sequential variable definitions. For common
> code like this:
>
> (let (a vala)
> (b valb)
> ... do something with a & b...
> (let (c (fn a b))
> (d (fn a b))
> ... do something with a, b, c, d...
> (let (e (fn ...))
> (f (fn ....))
>
> etc. You eventually get a very deeply nested function simply because
> the values of variables assigned later in the code depend on values
> determined earlier in the code. From what I can this is also the case
> in clojure, correct?
>
> In contrast, the python/ruby/java approach (which I realize has its
> own warts).
> a = 1
> b = 2
> c = a * b
> d = a + c
> e = func(d)
>
> in which new bindings are automatically created in the current scope,
> tends to be more readable in many cases.
>
> I'm new to clojure so I'm wondering - are there idiomatic ways of
> reducing the degree of scope-nesting let incurs or do people just tend
> to try to avoid that kind of code with smaller sub functions etc?
>
> --
> 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
--
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