Keen is an upcoming general-purpose programming language.
It's currently in alpha state. There will be breaking changes.
Some interesting features:
- Keen programs can be run directly with no build step, or built to a JAR or JS file.
- Everything is an expression, including
ifandfor. Expressions are nested using indentation. - The meaning of an expression depends on the expected type.
The same syntax1,2could be an array, tuple, vector, etc., based on where it is used. - Everything goes in modules; there are no globally visible declarations.
- Keen is strongly typed, with no subtypes or
nulls.
It does have some safe implicit conversions, but no user-defined ones. - Global state is restricted. Usually side effects are done through interfaces.
- The type system tracks mutability and prevents sharing non-thread-safe mutable data across threads.
- Specs allow you to call functions provided by the caller's context.
- Contexts provide an alternative for repetitive parameters.
To get started, read the intro.