Skip to content
/ capri Public

Statically typed programming language with emphasis on functional programming, compiles to LLVM IR.

License

Notifications You must be signed in to change notification settings

05st/capri

Repository files navigation

Capri

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.

Total Lines Latest Release

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.

Documentation, Installation/Usage Instructions

Language documentation and instructions can be found on the docs.


Go here if you're looking for the Capri website repository.

About

Statically typed programming language with emphasis on functional programming, compiles to LLVM IR.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published