(bruijn.marvinborner.de) bruijn programming language

ROAM_REFS: https://bruijn.marvinborner.de/
pow [index (iterate (mul 0) (+1))]

…**… pow

:test ((+2) ** (+3) =? (+8)) (true)

Functional programming language based on pure de Bruijn indexed lambda calculus.

Hint: Click on anything you don't understand.

Lambdas all the way down. No primitive functions.

> (+5)
[[[[2 (2 (1 3))]]]]
> 'a'
[[[1 (0 (0 (0 (0 (1 (1 (0 2)))))))]]]
> add
[[(([([[1 0 [[0]]]] ((((0 [[(((0...
> :time factorial (+42)
0.01 seconds

Efficient reduction using abstract machines and higher-order encodings.

Substantial standard library. Source

> ∏ (+1) → (+3) | ++‣
> number! <$> (lines "42
25")
> sum (take (+3) (repeat (+4)))
> (+10b) ⋀! (+12b)
$ echo "main [0]" > echo.bruijn
$ bruijn -b echo.bruijn > echo
$ wc -c echo
2 echo
$ echo "hello world!" | bruijn -e echo
hello world!

Compilation to Tromp's binary lambda calculus. Support for byte and ASCII encoding.

Meta-programming and self-interpretation.

> length `factorial
> !(swap `((+2u) (+3u)))
> lhs (blc→meta "010000100000110")

Local Graph

org-roam d5e68f52-2433-449d-9def-64e4ac3a30ed (bruijn.marvinborner.de) bruijn progr... //bruijn.marvinborner.de/wiki/technical/performance/ https://bruijn.marvinborner.de/wiki/technical/performance/ d5e68f52-2433-449d-9def-64e4ac3a30ed->//bruijn.marvinborner.de/wiki/technical/performance/ //bruijn.marvinborner.de/std/ https://bruijn.marvinborner.de/std/ d5e68f52-2433-449d-9def-64e4ac3a30ed->//bruijn.marvinborner.de/std/ //bruijn.marvinborner.de/wiki/coding/compilation/ https://bruijn.marvinborner.de/wiki/coding/compilation/ d5e68f52-2433-449d-9def-64e4ac3a30ed->//bruijn.marvinborner.de/wiki/coding/compilation/ //bruijn.marvinborner.de/wiki/coding/meta-programming/ https://bruijn.marvinborner.de/wiki/coding/meta-programming/ d5e68f52-2433-449d-9def-64e4ac3a30ed->//bruijn.marvinborner.de/wiki/coding/meta-programming/