is an extension of the JavaLanguage
. It has advanced features like ParametricPolymorphism
, tuples, KeywordParameterPassing
. Unique features also include AbstractInterface
s and a type system preventing NullPointerException
s at compile time. The compiler is OpenSource
, and the design of the language is open to public review and contributions.
Like many OtherLanguagesForTheJavaVm
, allows full access to the Java libs.
Clever. It feels a lot like the DylanLanguage
, but with static typing, ParametricPolymorphism
, and JavaVirtualMachine
integration. Not a bad language, as such things go, but some of the syntax feels a bit more verbose than necessary. Not the ultimate language, but nice. So to speak.
A design decision for Nice is to stay close to Java, except when introducing a difference provides a clear advantage. This is supposed to make learning the language easier, but also comes with the price of some legacy, especially in the syntax. Is this what you are referring to, or is the verbosity in the syntax of the Nice-specific features? Could you give examples? -- DanielBonniot
Interesting. An especially unique feature is the idea of an AbstractInterface
. As everyone knows, a normal interface tags an object as having a given set of methods and is part of the object's type, but doesn't provide the methods. In Nice, an abstract interface doesn't affect the object's type; rather, it simply tags the object as having the methods. This becomes uniquely useful with method generics. See the Nice manual. In short, it provides something that looks very much like AspectOrientedProgramming
It looks like an AbstractInterface
is like the "Concepts" which were proposed for (and removed from) C++0x? -- RonRomero
I guess this is generally known as a MixIn