Re:Clojure 1.11 planning
by dancek on Tuesday October 08, 2019 @07:51AM
(#21191186)
What parts of compatibility are missing? The interop works just fine, as with all other Java.
Of course it's not practical to convert lists and functions to their Java counterparts like that, but if you need to work with Java objects it's possible.
[ Parent
| on HN ]
I think first class support would remove a lot of boilerplate in that code. For the purpose of writing that, i prefer to write it directly in Java.
Why wouldn’t you prefer writing it directly in Clojure?
(map #(* % 2) [1 2 3 4 5])
Even less boilerplate, even more signal/noise.Slightly off-topic, but as someone who's normally using Python / R, my hands feel tired just from thinking about typing all of that
Re:Clojure 1.11 planning
by ARandomerDude on Tuesday October 08, 2019 @11:00AM
(#21193011)
In practice, you wouldn't. You'd import at the top of the file, then type `Stream/of` instead of `java.util.stream.Stream/of`.
I almost never use Java directly though because there are so many great Clojure wrappers.
Re:Clojure 1.11 planning
by Uhuhreally on Tuesday October 08, 2019 @12:56PM
(#21194313)
In Clojure that's:
(map (fn [x] (* 2 x)) [1 1 2 3 5])
=> (2 2 4 6 10)so no Java Function to clojure Function automating mapping ? do people use macros to make it nicer ?
Not out of the box, probably because java.util.function.Function seems like an afterthought in a strictly object-oriented language while Clojure has first class functions. In practice you don't interop with Java very much, let alone functional Java (as Clojure itself is a much better fit). But if it was useful, it'd be easy to write helpers for converting functions back and forth.
Re:Clojure 1.11 planning
by Uhuhreally on Tuesday October 08, 2019 @12:53PM
(#21194285)
you'd use Clojure not Java for an example like the above
I think the context is when doing interop.
Re:Clojure 1.11 planning
by Uhuhreally on Tuesday October 08, 2019 @02:17PM
(#21195284)
yes but I got the feeling the grandparent was confused so I tried to clarify that the only reason for the verbosity is interop - the Clojure code is much more concise than the Java - the interop code is like listening to a speech being translated between English and Spanish