Cool; thanks. That's an implementation-level explanation, which is fine as far as it goes.
Can anyone point at a specification-level explanation? On Sunday, 26 May 2013 23:18:57 UTC+1, JvJ wrote: > > Actually, I spoke WAY too soon. > > It looks like it has to do with the way that Var is cast to IFn. > > > https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Var.java > > Check out lines 391 and 410. When invoked, the result of fn() is invoked. > fn() casts deref() (the data contained by the var) into a function. > > If the var contains another var, casting that var to an IFn will result in > a recursive call. > > For example: > > f3 casts f2 to an IFn. > f2 casts f1 to an IFn. > f1 casts the function to an IFn (resulting in the function). > > So the "chaining together" is defined in the invoke method and the casting > process. > > On Sunday, 26 May 2013 17:33:24 UTC-4, Simon Katz wrote: >> >> If I define a chain of vars like this... >> >> (defn f1 [] 42) >> >> (def f2 #'f1) >> >> (def f3 #'f2) >> >> ...when I call f3 the chain of vars is followed: >> >> (f3) ; => 42 >> >> Out of curiosity, where is this following-the-chain defined? >> >> I looked at http://clojure.org/evaluation which simply says "The result >> of the evaluation of the operator is [...] cast to IFn (the interface >> representing Clojure functions), and invoke() is called on it". >> >> --Simon >> > -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
