Content deleted Content added
→top: Mismatch |
m →top: replaced: primitively-defined → primitively defined |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 65:
| access-date=2015-12-04}}</ref>
* A type system enforcing [[null safety]] and list element existence at compile time
* Regular syntax and semantics, avoiding special cases and primitively
* Support for generic programming and metaprogramming, with [[Reification (computer science)|reified]] [[Parametric polymorphism|generics]]
* Modularity built into the language, based on [[WildFly|JBoss modules]], interoperable with [[OSGi]]<ref>{{cite web
Line 108:
One of the most novel aspects of Ceylon compared to Java is its [[type system]]. Ceylon foregoes Java's primitive types<ref>{{cite web|last1=King|first1=Gavin|title=Ceylon: Language Design FAQ|url=http://ceylon-lang.org/documentation/faq/language-design/}}</ref> and [[Object type|boxing]] in favor of a type system composed entirely of first-class objects. While this may cause boxing overhead in some situations, it makes the type system more uniform.
Ceylon allows for union and [[intersection type]]s, in a similar fashion to [[TypeScript]], [[Whiley (programming language)|Whiley]] and Flow, which in fact, took the idea from Ceylon.
Union types, written <code>A|B</code>, allow a variable to have more than one type. The following example shows a Ceylon function which may take either an [[Integer (computer science)|integer]] or a [[String (computer science)|string]]:
|