The Carth programming language
Purely functional programming with lisp-syntax. Less infix, more parens!
Visit https://carth.pink/ for an overview of the language and more info.
WORK IN PROGRESS
Just as a little disclaimer: this project is still in alpha development, so there are no guarantees of stability etc.
- Scheme-inspired syntax and feel
- Static, Hindley-Milner typechecking à la ML
- Algebraic datatypes
- LLVM backend
This is a high-level overview of what is planned for the language, and some of the points are just tentative. See TODO.org for more extensive list of planned features and more detailed descriptions.
- Type families
- Higher kinded types
- Effect system
- Linear types
To build the project and install the
carth binary, the core library,
and the standard library, simply run
make install, which defaults to
installing the binary in
~/.local/bin, the core library in
~/.local/lib, and the modules of the Carth standard library in
Building with Carth
At compiler runtime, the dependencies are
libgc, which are linked into the executables
produced by Carth.
Carth must further be able to find the core library and standard library
modules, so you must have added the directory of the installed core
~/.local/lib) to your
variable, the directory of the installed standard library (default
~/.carth/mod) to your
CARTH_MODULE_PATH environment variable.
# General help carth help carth -h carth --help # Help for a specific subcommand carth help c # Compile and run a program with default output filename carth c examples/fizzbuzz.carth ./examples/fizzbuzz.bin # Run with the JIT compiler carth run examples/fizzbuzz.carth # Compile a program with a specific output filename carth c -o examples/fizzbuzz examples/fizzbuzz.carth ./examples/fizzbuzz
- What's important is the spirit of open source, not the letter of the license. Licences are not sufficient anyways.
- Copyright is a spook & capitalism is killing this planet.
- The AGPL is me being pragmatic.
Carth is dual licensed under the Anti-Capitalist Software License or the AGPL version 3 or later. See LICENSE-ACSL and LICENSE-AGPLv3 for the full license texts. For more information about the licenses, go to anticapitalist.software or gnu.org.