https://github.com/05st/capri
Statically typed programming language with emphasis on functional programming, compiles to LLVM IR.
https://github.com/05st/capri
compiler functional-programming haskell language languages programming-language
Last synced: about 1 month ago
JSON representation
Statically typed programming language with emphasis on functional programming, compiles to LLVM IR.
- Host: GitHub
- URL: https://github.com/05st/capri
- Owner: 05st
- License: mit
- Created: 2021-10-22T17:59:00.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-14T00:38:32.000Z (over 2 years ago)
- Last Synced: 2025-04-07T05:42:06.387Z (6 months ago)
- Topics: compiler, functional-programming, haskell, language, languages, programming-language
- Language: Haskell
- Homepage: https://05st.github.io/capri-website/
- Size: 307 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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.
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 libraryPlanned features:
- Ad-hoc polymorphism (most likely via typeclasses)
- Optional [garbage collector](https://en.wikipedia.org/wiki/Boehm_garbage_collector)
- Lambdas/closures
- Exhaustiveness checking for pattern matchingExamples can be found [here](https://github.com/05st/capri/tree/master/examples).
## Documentation, Installation/Usage Instructions
Language documentation and instructions can be found on the [docs](https://05st.github.io/capri-website/).---
Go [here](https://github.com/05st/capri-website) if you're looking for the Capri website repository.