Bad example:
  (-> "hello world" (.split " ") #^String second (.split "o") seq) ; 
actually works
but not:
  (-> "hello world" (.split " ") #^String (second) (.split "o") seq) ; 
works only with the patched ->

Christophe Grand a écrit :
> Hello,
>
> Currently when you have a reflection warning in a -> form, you have to 
> split it:
>
> clojure.core=>  (-> "hello world" (.split " ") second (.split "o") seq)
> Reflection warning, line: 1269 - call to split can't be resolved.
> ("w" "rld")
>
> I propose to modify the -> macro to make it preserve type hints, hence 
> you could write:
>
> clojure.core=> (-> "hello world" (.split " ") #^String second (.split 
> "o") seq)
> ("w" "rld")
>
> Here is the patched macro:
>
> (defmacro ->
>   "Threads the expr through the forms. Inserts x as the
>   second item in the first form, making a list of it if it is not a
>   list already. If there are more forms, inserts the first form as the
>   second item in second form, etc."
>   ([x] x)
>   ([x form] (with-meta
>               (if (seq? form)
>                 `(~(first form) ~x ~@(next form))
>                 (list form x)) (meta form)))
>   ([x form & more] `(-> (-> ~x ~form) ~...@more)))
>
>   


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

Reply via email to