Great! that was the missing bit i was looking for. thanks for clearing it out
(& it seems that String. is indeed a macro) On Jun 8, 11:05 pm, Kevin Downey <redc...@gmail.com> wrote: > sure it can, you just need to pass in an initial value. > > (-> (String.) String. String.) ; works > (-> x String. String.) ;works for any x where string has a constructor > that takes something of type x > > for example > > (-> "file.txt" File. FileReader. BufferedReader.) > > will return a buffered reader on file.txt (assuming you import those > classes from java.io) > > > > On Mon, Jun 8, 2009 at 12:59 PM, ronen<nark...@gmail.com> wrote: > > > I see, using "->" with "." will not create a chain of "new" > > invocations, the best solution that iv found is: > > user=> (String. (String.)) > > "" > > user=> (macroexpand (String. (String.))) > > "" > > user=> (macroexpand `(String. (String.))) > > (new java.lang.String (java.lang.String.)) > > > Nesting is a must :) > > Thank you both for your helpful reply > > > On Jun 8, 10:51 pm, Kevin Downey <redc...@gmail.com> wrote: > >> you need to pass something in. > >> example: > > >> => (-> "foo" String. String.) > >> "foo" > > >> => (macroexpand '(-> String. String.)) > >> (new String String.) > > >> => (macroexpand '(-> "foo" String. String.)) > >> (new String (clojure.core/-> "foo" String.)) > >> => (macroexpand '(-> "foo" String.)) > >> (new String "foo") > > >> String. is only treated as new String ... when it is placed in the > >> function position (String. ...) > >> in (-> String. String.) the first String. is never put in the > >> function position, so effectively you get > >> (String. String.) > > >> On Mon, Jun 8, 2009 at 12:38 PM, ronen<nark...@gmail.com> wrote: > > >> > Following a blog post on building large object graphs I was suggested > >> > with the following solution: > >> > (def nested-object (-> GrandFather. Father. GrandSon.)) > > >> > this indeed seems to be correct however fails in even in a simple > >> > example: > > >> > user=> (-> String. String.) > >> > java.lang.ClassNotFoundException: String. (NO_SOURCE_FILE:7) > > >> > expanding the macros involved seems to reveal the issue: > > >> > user=> (macroexpand-1 `(-> String. String.)) > >> > (java.lang.String. java.lang.String.) > > >> > the "." macro isn't expanded. > > >> > Is there a way of applying nested macros? > >> > (iv searched for "applying nested macros" with no results). > > >> -- > >> And what is good, Phaedrus, > >> And what is not good— > >> Need we ask anyone to tell us these things? > > -- > And what is good, Phaedrus, > And what is not good— > Need we ask anyone to tell us these things? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---