On Saturday, 6 December 2014 at 09:07:34 UTC, Dmitry Olshansky
wrote:
Solved in Scala:
- operator overloading
- properties - that + optional (), a library writer still can
enforce () to be used
- only and exactly one class - any number in any combination
- everything class - sort of, it has 'object' clause (just like
'class') that can be thought as a kind of namespace or a
singleton if you love OOP.
Not fixed:
- unsigend types - nothing here unless Java adds support
- pasing by value - there are immutable and value types (e.g.
Tuples) but I think they are references behind the scenes
- no templates, but you may use AST macros which is even more
powerful
Scala tries to make things nicer by providing higher level
abstractions but with tiny bit more poking JVM origins still are
unpleasantly notable. The whole Function1 .. Function22 trait
thing has made me laugh very hard when reading the spec
originally :)