On Sun, Feb 17, 2013 at 6:12 AM, Jacob Goodson <submissionfight...@gmx.com>wrote:
> You need to know something... it's a dialect of LISP, *the only*limitation is > you. though it is certainly exerting its limitations on me > > > On Thursday, February 14, 2013 5:08:57 PM UTC-5, AtKaaZ wrote: > >> Thank you! I didn't know you could do .newInstance >> >> oh that's a nice trick with eval and list 'new >> >> So it's not impossible after all, thanks Aaron! >> Here's what I got from what you said: >> => *(defmacro mew [cls & restt] >> `(eval (list 'new ~cls ~@restt)) >> )* >> #'runtime.q/mew >> => *(let [a java.lang.RuntimeException] >> (mew a) >> )* >> #<RuntimeException java.lang.RuntimeException> >> >> it makes sense now, using eval at runtime not at compile time as I was >> trying >> >> and also the newInstance variant: >> => *(defmacro mew [cls & restt] >> `(.newInstance ~cls ~@restt) >> )* >> #'runtime.q/mew >> => *(let [a java.lang.RuntimeException] >> (mew a) >> )* >> #<RuntimeException java.lang.RuntimeException> >> >> >> Really, thank you Aaron, >> >> >> On Thu, Feb 14, 2013 at 11:02 PM, Aaron Cohen <aa...@assonance.org>wrote: >> >>> Yes, since this is runtime you should use reflection. >>> >>> (let [a java.lang.RuntimeException] >>> (.newInstance a)) >>> >>> Alternatively, you can use eval: >>> >>> (let [a java.lang.RuntimeException] >>> (eval (list 'new a))) >>> >>> >>> On Thu, Feb 14, 2013 at 4:53 PM, AtKaaZ <atk...@gmail.com> wrote: >>> >>>> I figure since new is expecting a class at compiletime, we can never >>>> pass it a class that we evaluate at runtime(those locals), ergo => >>>> impossible to macro around "new" like that >>>> >>>> like this => impossible: >>>> *(let [a java.lang.RuntimeException] >>>> (macro-that-eventually-calls-new a))* >>>> >>>> maybe someone could suggest another way? clojure.reflect ? >>>> >>>> >>>> >>>> On Thu, Feb 14, 2013 at 10:40 PM, AtKaaZ <atk...@gmail.com> wrote: >>>> >>>>> thanks for the reply, >>>>> >>>>> => *(defmacro mew [cls & args] >>>>> `(new ~cls ~@args))* >>>>> #'runtime.q/mew >>>>> =>* (let [a java.lang.RuntimeException] >>>>> (mew a) >>>>> )* >>>>> >>>>> CompilerException java.lang.**IllegalArgumentException: Unable to >>>>> resolve classname: a, compiling:(NO_SOURCE_PATH:2:3) >>>>> >>>>> that would be the equivalent macro of what *new* is doing >>>>> it's like >>>>> *(new a)* >>>>> CompilerException java.lang.**IllegalArgumentException: Unable to >>>>> resolve classname: a, compiling:(NO_SOURCE_PATH:2:3) >>>>> >>>>> >>>>> This is the goal: >>>>> >>>>> The goal is to can write this form: >>>>> => *(let [a java.lang.RuntimeException] >>>>> (new a))* >>>>> >>>>> but I think it's impossible, at least by using "new" it is >>>>> >>>>> >>>>> On Thu, Feb 14, 2013 at 10:34 PM, Andy Fingerhut <andy.fi...@gmail.com >>>>> > wrote: >>>>> >>>>>> >>>>>> On Feb 14, 2013, at 1:27 PM, AtKaaZ wrote: >>>>>> >>>>>> The goal is to can write this form: >>>>>> => *(let [a java.lang.RuntimeException] >>>>>> (new a) >>>>>> )* >>>>>> CompilerException java.lang.**IllegalArgumentException: Unable to >>>>>> resolve classname: a, compiling:(NO_SOURCE_PATH:2:3) >>>>>> >>>>>> attempt with macro: >>>>>> =>* (defmacro mew [cls & restt] >>>>>> `(new ~(eval cls) ~@restt) >>>>>> )* >>>>>> #'runtime.q/mew >>>>>> >>>>>> >>>>>> This is probably your closest attempt. Try this variation on the >>>>>> above: >>>>>> >>>>>> (defmacro mew [cls & args] >>>>>> `(new ~cls ~@args)) >>>>>> >>>>>> user=> (macroexpand-1 '(mew java.lang.RuntimeException)) >>>>>> (new java.lang.RuntimeException) >>>>>> >>>>>> Andy >>>>>> >>>>>> -- >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Clojure" group. >>>>>> To post to this group, send email to clo...@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+u...@**googlegroups.com >>>>>> >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/**group/clojure?hl=en<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+u...@**googlegroups.com. >>>>>> >>>>>> For more options, visit >>>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>>> . >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Please correct me if I'm wrong or incomplete, >>>>> even if you think I'll subconsciously hate it. >>>>> >>>>> >>>> >>>> >>>> -- >>>> Please correct me if I'm wrong or incomplete, >>>> even if you think I'll subconsciously hate it. >>>> >>>> -- >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@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+u...@**googlegroups.com >>>> >>>> For more options, visit this group at >>>> http://groups.google.com/**group/clojure?hl=en<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+u...@**googlegroups.com. >>>> >>>> For more options, visit >>>> https://groups.google.com/**groups/opt_out<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 clo...@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+u...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/clojure?hl=en<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+u...@**googlegroups.com. >>> >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> >> >> -- >> Please correct me if I'm wrong or incomplete, >> even if you think I'll subconsciously hate it. >> >> -- > -- > 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. > > > -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- 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.