~jojo/Carth

ref: 2a0239240251c94f44c382413ad9563cf3992786 Carth/README.org -rw-r--r-- 2.3 KiB
2a023924JoJo Update README to reflect new build procedure with `make install` 1 year, 6 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#+TITLE: The Carth programming language

Purely functional programming with lisp-syntax. Less infix, more parens!

Visit [[https://carth.jo.zone/][https://carth.jo.zone/]] for an overview of the language and more info.

* /WORK IN PROGRESS/
  Just as a little disclaimer: this project is in the very early
  stages of development, so there are no guarantees of stability etc.

* Features
  - Scheme-inspired syntax and feel
  - Static, Hindley-Milner typechecking à la ML
  - Currying
  - Closures
  - Algebraic datatypes
  - LLVM-based backend

* Roadmap
  This is a high-level overview of what is planned for the language, and
  some of the points are just tentative. See [[./TODO.org][TODO.org]] for more extensive
  list of planned features and more detailed descriptions.

  - Typeclasses
  - Higher kinded types
  - Effect system
  - Linear types

* Building
  The compiler is writtern in [[https://haskell.org][Haskell]] and uses the [[https://www.haskellstack.org/][Stack]] build system,
  while the core-library is written in [[https://rust-lang.org][Rust]]. The external dependencies
  required are [[https://llvm.org/][LLVM]] version 9.

  To build the project and install the ~carth~ binary, the core
  library, and the standard library, simply run ~make install~, which
  defaults to installing everything in ~~/.carth/~.

* Running
  #+BEGIN_EXAMPLE bash
  # 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
  ./out

  # Compile a program with a specific output filename
  carth c -o examples/fizzbuzz examples/fizzbuzz.carth
  ./examples/fizzbuzz
  #+END_EXAMPLE

* License
  AGPLv3

  Copyright (C) 2019  Johan Johansson

  This program is free software: you can redistribute it and/or
  modify it under the terms of the GNU Affero General Public License
  as published by the Free Software Foundation, either version 3 of
  the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Affero General Public License for more details.

  See [[./LICENSE][LICENSE]]