Hi Terje,

The `let` form allows rebinding of symbols, which is not the same as 
mutability. In the form

    (let [x 1
          y 2
          x (+ x y)]
      x)

the value of `x` does not change, rather the third line creates a new 
binding for `x`. The difference may seem trivial, but most functional 
languages allow this kind of rebinding. Imagine if you could never rebind a 
symbol after using it: you would quickly run out of symbols. That said, 
reusing the same symbol within one `let` form will make your code harder to 
read.

As you note, you can write a procedural program within a `let` form, and 
that's not necessarily a bad thing in the right circumstances. But as Alan 
notes, it's essentially the same as many nested `let` forms.

-Stuart Sierra
clojure.com

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