Capri is a statically typed, general purpose programming language with an emphasis on functional programming and simplicity. It takes inspiration from other languages such as Rust or Haskell.
The compiler currently targets only LLVM (previously it generated C). Everything in the language is subject to change. Major planned features such as ad-hoc polymorphism are also currently missing. Here is a list of so far implemented features:
- Type inference with an extended Hindley-Milner type system
- Extensible records and enums (algebraic data types)
- Isorecursive types
- Parametric polymorphism
- Module system (which will allow some sort of dynamic linking)
- User-defined prefix, infix, and postfix operators with arbitrary precedences
- Pattern matching (exhaustiveness checking is planned)
- A small standard library
Planned features:
- Ad-hoc polymorphism (most likely via typeclasses)
- Optional garbage collector
- Lambdas/closures
- Exhaustiveness checking for pattern matching
Examples can be found here.
Language documentation and instructions can be found on the docs.
Go here if you're looking for the Capri website repository.