Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> I would say that the JVM and CLR were not designed to support many languages.

Hm...CLR stands for Common Language Runtime. I think it was explicitly created to support many languages.



It still has C#'s object type system baked into it. It also has reified generics (IMHO a good thing from a performance perspective), which bakes in a particular way of doing parametric polymorphism. If your language's generics work differently than C#'s, you are probably going to have a bad time, and you might have to bring all your own libraries.

The CLR's support for functional programming is better than the JVM partly because of the reified generics and partly because Microsoft developed F# and thus had skin in that game and worked hard to make it better.

The JVM's support for functional programming has always been weak; invokedynamic and the additional MethodHandle framework reduces boilerplate but is not really the right feature for FP, but a very clunky and heavyweight OO view of FP.


> It also has reified generics (IMHO a good thing from a performance perspective), which bakes in a particular way of doing parametric polymorphism.

Reified generics need additional support, and if you're using type erasure you didn't need any support. What's missing then when it comes to supporting mainstream languages - HKT?


You can't use the .NET standard libraries that have type parameters if you simply erase (which is what I meant by bring your own libraries).


Funnily enough, the CLR barely runs F#, while the JVM’s (which is supposedly was designed as java-only) guest language ecosystem is blooming.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: