blob: a456752a5ba0ac8095f3086c89cd5acec6a45e5c (
plain) (
blame)
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
|
<p align="center">
<img width="200" src="https://raw.githubusercontent.com/marvinborner/bruijn/main/docs/res/logo.png" alt="Bruijn logo"/>
</p>
> A purely functional programming language based on lambda calculus and
> De Bruijn indices written in Haskell.
Wiki, docs, articles, examples and more:
[website](https://bruijn.marvinborner.de).
## Features
- **De Bruijn indices** eliminate the complexity of α-equivalence and
α-conversion
- Unique **bracket-style representation** for lambda abstractions
enables improved human-readability and faster syntactic perception
- **Call-by-need** reduction with great time/memory complexity by using
the RKNL abstract machine (similar to
[calm](https://github.com/marvinborner/calm/))
- **Syntactic sugar** for unary/binary/ternary numerals and
binary-encoded strings and chars
- **No primitive functions** - every function is implemented in Bruijn
itself
- Highly space-efficient compilation to **binary lambda calculus (BLC)**
additionally to normal interpretation and REPL
- Strongly **opinionated parser** with strict syntax rules
- **Recursion** can be implemented using combinators such as Y, Z or ω
- Substantial **standard library** featuring many useful functions (see
`std/`)
## Wiki
Learn anything about bruijn in the
[wiki](https://bruijn.marvinborner.de/wiki/) (also found in
`docs/wiki_src/`).
|