Hi Tassilo

Perfect answer - the fog is definately beginning to lift!

Do you know why Clojure automatically dereferences functions but not
for other bound values?

cheers

Dave

On Apr 23, 1:36 pm, Tassilo Horn <tass...@member.fsf.org> wrote:
> David Simmons <shortlypor...@gmail.com> writes:
>
> Hi David,
>
> > Presumably this only applies to functions?
>
> No, not really.
>
> > If I replace (defn foo [] "hello") with (def foo "hello") I don't get
> > the same results. Is this because functions are handled differently?
>
> --8<---------------cut here---------------start------------->8---
> user> (def foo "hello")
> #'user/foo
> user> (def a foo)   ;; a has the current value of foo
> #'user/a
> user> (def b #'foo) ;; b's value is the Var foo
> #'user/b
> user> (def foo "goodbye")
> #'user/foo
> user> a
> "hello"
> user> b
> #'user/foo
> user> @b
> "goodbye"
> --8<---------------cut here---------------end--------------->8---
>
> Please note that you have to dereference b explicitly to get the value
> currently bound to foo.  That's because b's value is again a Var.  It
> seems that Clojure dereferences Var's automatically, possibly multiple
> times, in case of function calls.  So in Stuard's example, both (b) and
> (@b) call the function currently bound to foo.
>
> Bye,
> Tassilo

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