aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: 4b6f95abd7322231ad98165f51e926fa7bb253b9 (plain)
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
![lisk.png](https://u.peppe.rs/0j.png)

`lisk` is a (soon to be) interpreter for R6RS Scheme,
written by the students of RV. It is written in Haskell and
compiled against GHC v8.6.5. `lisk` is an educational
adventure, it does not intend to be highly performant or
fully compliant with R6RS.

### Building and Running `lisk`

On systems using the `nix` package manager:

```shell
cabal2nix . > default.nix
nix-build release.nix
./result/bin/lisk
```

Alternatively, you may build and run using `cabal`:

```shell
# requires ghc & cabal to be installed
cabal build exe:lisk
cabal run lisk
```

### Usage

On running `lisk`, you will be greeted by the `lisk` REPL,
where you may enter `lisk` expressions:

```scheme
;;; Entering lisk repl ...
 (+ 1 1)
2
 (* 42 (- 2 -3))
210
 (and (not (= 2 2)) #f)
#f
```

### Testing

`lisk` includes a property-based testing suite, written with
the QuickCheck module, you may run tests for the project
via:

```shell
cabal run tests
```