Type hint Java array of your own Java class
(defn foobar [#^MyClass[] myarray]) This syntax doesn't seem to work. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
David Nolen a écrit : > (defn foobar [#^MyClass[] myarray]) > > This syntax doesn't seem to work. Indeed it's a bit tricky: #^"[Lyour.package.YourClass;" You can find it by doing: user=> (class (into-array [(your.package.YourClass.)])) [Lyour.package.YourClass; Christophe -- Professional: http://cgrand.net/ (fr) On Clojure: http://clj-me.blogspot.com/ (en) --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
Many thanks. On Wed, Feb 4, 2009 at 12:49 PM, Christophe Grand wrote: > > David Nolen a écrit : > > (defn foobar [#^MyClass[] myarray]) > > > > This syntax doesn't seem to work. > Indeed it's a bit tricky: > #^"[Lyour.package.YourClass;" > > You can find it by doing: > user=> (class (into-array [(your.package.YourClass.)])) > [Lyour.package.YourClass; > > Christophe > > -- > Professional: http://cgrand.net/ (fr) > On Clojure: http://clj-me.blogspot.com/ (en) > > > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
On Wed, Feb 4, 2009 at 12:49 PM, Christophe Grand wrote: > > David Nolen a écrit : >> (defn foobar [#^MyClass[] myarray]) >> >> This syntax doesn't seem to work. > Indeed it's a bit tricky: > #^"[Lyour.package.YourClass;" > > You can find it by doing: > user=> (class (into-array [(your.package.YourClass.)])) > [Lyour.package.YourClass; Christophe, thanks for pointing the way. Sorry I kept going... (defn array-of [cname] (-> cname resolve .newInstance list into-array class .getName)) With that, you can: (defn foobar [#^#=(array-of MyClass) myarray]) At least it appears to work: user=> (meta #^#=(array-of String) []) {:tag "[Ljava.lang.String;"} Again, I apologize for even suggesting this. --Chouser --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
Sorry for jumping in, but "#^#=" doesn't make any sense to me. Where did this come from? Chris On Feb 4, 2:55 pm, Chouser wrote: > On Wed, Feb 4, 2009 at 12:49 PM, Christophe Grand > wrote: > > > David Nolen a écrit : > >> (defn foobar [#^MyClass[] myarray]) > > >> This syntax doesn't seem to work. > > Indeed it's a bit tricky: > > #^"[Lyour.package.YourClass;" > > > You can find it by doing: > > user=> (class (into-array [(your.package.YourClass.)])) > > [Lyour.package.YourClass; > > Christophe, thanks for pointing the way. Sorry I kept going... > > (defn array-of [cname] > (-> cname resolve .newInstance list into-array class .getName)) > > With that, you can: > > (defn foobar [#^#=(array-of MyClass) myarray]) > > At least it appears to work: > > user=> (meta #^#=(array-of String) []) > {:tag "[Ljava.lang.String;"} > > Again, I apologize for even suggesting this. > > --Chouser --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
On Wed, Feb 4, 2009 at 6:22 PM, chris wrote: > > "#^#=" doesn't make any sense to me. Where did this come from? I already apologized twice, what more do you want from me!? As penance, I will try to explain. #^ is a reader macro, documented at http://clojure.org/reader #= is another reader macro, largely undocumented, but discussed here: http://groups.google.com/group/clojure/browse_thread/thread/7a24eeb982490a87/d579d881fea5b16d?#d579d881fea5b16d >> user=> (meta #^#=(array-of String) []) >> {:tag "[Ljava.lang.String;"} The whole point of this example was to attach type-hint metadata to a function arg, so the use of #^ was necessary. But usually #^ just takes a literal symbol or map, and I wanted to use the results of a function call, so I abused #= to do just that. --Chouser --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
Chouser a écrit : > (defn foobar [#^#=(array-of MyClass) myarray]) > > Again, I apologize for even suggesting this Wow what a clever (ab)use of reader macros! -- Professional: http://cgrand.net/ (fr) On Clojure: http://clj-me.blogspot.com/ (en) --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: Type hint Java array of your own Java class
On Thu, Feb 5, 2009 at 7:33 AM, Christophe Grand wrote: > > Chouser a écrit : >> (defn foobar [#^#=(array-of MyClass) myarray]) >> >> Again, I apologize for even suggesting this > Wow what a clever (ab)use of reader macros! This is where a raptor jumps in from the left and eats someone :) > > -- > Professional: http://cgrand.net/ (fr) > On Clojure: http://clj-me.blogspot.com/ (en) > > > > > > -- Venlig hilsen / Kind regards, Christian Vest Hansen. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---