aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: c2c0eb2d6e170fa1b515541546fcf6cfe15d3323 (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
# Tunk

**Tunk** is a

- strongly and dynamically typed
- pure functional
- interpreted
- general use

programming language. Tunk is a hobby project written for educational purposes, and is inspired by languages such as Elm and Haskell.

## Running Tunk

Build the `tunk` interpreter with `cargo`:

    cargo build --release

Run `tunk` on a source file:

    target/release/tunk run samples/recursion.tunk

Run `tunk` REPL:

    target/release/tunk repl

## TODO

- 𝛂-conversion to avoid variable name collisions in recursive functions
- anonymous function syntax (`\x y -> x`)
- A pipeline operator (`argument |> function`)
- A function composition operator (`inner >> outer`)
- tail call recursion optimization
- more primitives: `list`, `tuple`
- list/monad operations `map`, `filter`, `reduce`
- an effect system for handling IO etc.

## Author

Jan Tuomi, <<jans.tuomi@gmail.com>>