The Cyan Object-oriented Language
Cyan is a statically-typed and prototype-based language for the JVM. The language has several innovations mainly in its Metaobject Protocol that allows tailoring the language to the developer’s goals. It supports all the expected features of modern languages and much more.
Below is the “Hello world” program. Soon there will be a short Cyan course.
package main object Program func run { "Hello world" println } end
Features
No bells and whistles, complex features are implemented using metaobjects, outside the language
The compiler guarantees that every local variable and object field is initialized before used, with few exceptions
Nullable types are only possible with unions like String|Nil
Code either as in a statically-typed language or as in a dynamically-typed language or both at the same time
Restrict the acceptable real types for generic prototypes using a concept language
Exception handling is made using regular message passing
And much more
Context objects are a generalization of anonymous functions
A project language for defining the program (see the Cyan manual)
Java integration (you can import and use Java packages)
Safety mechanisms by default