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<[email protected]> 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?

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to