blob: 6e4e68641e724d8ece1196c775cc5018cf0acde9 (
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
|
# BLoCade
[BLoC](https://github.com/marvinborner/bloc) is a file format for shared
binary lambda calculus (BLC).
BLoCade, the BLoC-aid, turns BLoC files back into executable files
(targets). This is useful for [bruijn](https://bruijn.marvinborner.de)
(see [wiki](https://bruijn.marvinborner.de/wiki/coding/compilation/)),
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. The dependency graph is resolved by
a topological sort. 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).
- Planned: [Effekt](https://effekt-lang.org), Scala, HVM, C, NASM,
LLVM, JS, Haskell
## Benchmarks
To be evaluated.
|