Right now I ca't figure why the fn case is working but the anonyous Var is
failing because the vars are specially handled:

        else if(value instanceof Var)
            {
            Var var = (Var) value;
            gen.push(var.ns.name.toString());
            gen.push(var.sym.toString());
            gen.invokeStatic(RT_TYPE, Method.getMethod("clojure.lang.Var
var(String,String)"));
            }

Christophe


On Thu, Aug 8, 2013 at 4:44 PM, Jamie Brandon
<ja...@scattered-thoughts.net>wrote:

> What if it isn't inside a constant?
>
> user=> (eval `(fn [] ~#'x))
> #<user$eval1366$fn__1367 user$eval1366$fn__1367@15dbb76>
>
> user=> (with-local-vars [x nil] (eval `(fn [] ~x)))
> CompilerException java.lang.NullPointerException,
> compiling:(NO_SOURCE_PATH:1:1)
>
> How about functions? These are unreadable but they still eval
> correctly inside  constants.
>
> user=> (letfn [(x [] nil)] (eval x))
> #<user$eval1377$x__1378 user$eval1377$x__1378@5fea6729>
>
> user=> (letfn [(x [] nil)] (eval [x]))
> [#<user$eval1381$x__1382 user$eval1381$x__1382@e3b7c27>]
>
> user=> (read-string "#<user$x user$x@1981e4d>")
> RuntimeException Unreadable form  clojure.lang.Util.runtimeException
> (Util.java:219)
>
> user=> (defn x [] nil)
> #'user/x
>
> user=> (eval x)
> #<user$x user$x@14ff1714>
>
> user=> (eval [x])
> [#<user$x user$x@5892d4a8>]
>
> user=> (read-string "#<user$eval1381$x__1382 user$eval1381$x__1382@e3b7c27
> >")
> RuntimeException Unreadable form  clojure.lang.Util.runtimeException
> (Util.java:219)
>
> On 8 August 2013 14:58, Christophe Grand <christo...@cgrand.net> wrote:
> > The error is caused by the fact that eval sees the var as a constant (or
> > part of) and tries to serialize the constant.
> > #<Var: --unnamed--> is unreadable while #'user/x is that explains teh
> > difference in behaviour.
> >
> >
> > On Thu, Aug 8, 2013 at 3:40 PM, Jamie Brandon <
> ja...@scattered-thoughts.net>
> > wrote:
> >>
> >> This has me stumped:
> >>
> >> user=> (with-local-vars [x nil] (eval x))
> >> #<Var: --unnamed-->
> >> user=> (with-local-vars [x nil] (eval [x]))
> >> CompilerException java.lang.NullPointerException,
> >> compiling:(NO_SOURCE_PATH:1:1)
> >>
> >> By comparison:
> >>
> >> user=> (def x nil)
> >> #'user/x
> >> user=> (eval #'x)
> >> #'user/x
> >> user=> (eval [#'x])
> >> [#'user/x]
> >>
> >> --
> >> --
> >> 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 unsubscribe from this group and stop receiving emails from it, send
> an
> >> email to clojure+unsubscr...@googlegroups.com.
> >> For more options, visit https://groups.google.com/groups/opt_out.
> >>
> >>
> >
> >
> >
> > --
> > On Clojure http://clj-me.cgrand.net/
> > Clojure Programming http://clojurebook.com
> > Training, Consulting & Contracting http://lambdanext.eu/
> >
> > --
> > --
> > 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 unsubscribe from this group and stop receiving emails from it, send an
> > email to clojure+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> --
> 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 unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
On Clojure http://clj-me.cgrand.net/
Clojure Programming http://clojurebook.com
Training, Consulting & Contracting http://lambdanext.eu/

-- 
-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to