aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: a5a85fb3aaceabe5f87438e7b800d1873961e825 (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
# BLoCade

[BLoC](https://github.com/marvinborner/bloc) is an optimized file format
for binary lambda calculus (BLC).

BLoCade is the BLoC-aid and turns BLoC files back into executable files
(targets). This is useful for [bruijn](https://bruijn.marvinborner.de),
benchmarking, or general term optimization.

## Targets

-   BLC (sharing by abstraction): Terms having BLoC entry indices get
    abstracted and applied to the respective term. The indices get
    converted to De Bruijn indices. Flag `bblc` (bits) and `blc` (ASCII
    0/1).
-   BLC (unshared): Every BLoC entry gets reinserted into the original
    term. Do not use this if you want efficiency or small files. Flag
    `unbblc` (bits) and `unblc` (ASCII 0/1).
-   [Effekt](https://effekt-lang.org): Because, why not? Flag `effekt`.
-   Planned: Scala, HVM, C, LLVM, JS, Haskell

## Benchmarks

To be evaluated.