tvl-depot/users
sterni 36f6322d16 feat(sterni/nix/fun): implement tail call “optimization” for Nix
I've had the notion that builtins.genericClosure can be used to express
any recursive algorithm, but a proof is much better than a notion of
course! In this case we can easily show this by implementing a function
that converts a tail recursive function into an application of
builtins.genericClosure.

This is possible if the function resolves its self reference using a
fixed point which allows us to pass a function that encodes the call to
self in a returned attribute set, leaving the actual call to
genericClosure's operator. Additionally, some tools for collecting meta
data about functions (argCount) and calling arbitrary functions (apply,
unapply) are necessary.

Change-Id: I7d455db66d0a55e8639856ccc207639d371a5eb8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5292
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
2022-02-15 12:52:19 +00:00
..
cynthia style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
edef style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
ericvolp12 chore(users/ericvolp12): Create ericvolp12 user directory and OWNERS file 2020-06-16 02:37:07 +00:00
eta style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
firefly feat(users/firefly): initialize with key for as 2020-09-28 13:41:40 +00:00
flokli feat(ops/nixos/whitby): add flokli user 2021-03-26 20:31:48 +00:00
grfn feat(grfn/home): Add function for git show -s --pretty=reference 2022-02-08 16:59:56 +00:00
isomer chore(whitby): Move isomer's SSH key to user directory 2020-07-23 19:32:15 +00:00
lukegb chore(lukegb): add keys.clouvider-lon01-nix 2020-11-30 23:18:39 +00:00
Profpatsch feat(users/Profpatsch/netencode): ignore earlier record entries 2022-02-14 14:12:19 +00:00
qyliss feat(whitby): Add SSH key for qyliss 2020-07-23 19:37:09 +00:00
riking style(rust): Format all Rust code with rustfmt 2022-02-08 12:06:39 +00:00
sterni feat(sterni/nix/fun): implement tail call “optimization” for Nix 2022-02-15 12:52:19 +00:00
tazjin fix(tazjin/emacs): suppress emacs warnings in warnings buffer 2022-02-14 17:43:03 +00:00
wpcarro feat(wpcarro/nix): Hard-code billandhiscomputer.com 2022-02-14 22:30:43 +00:00
zseri refactor(zseri/s-r-sc): use inner while loop to improve perf 2021-12-30 02:00:12 +00:00
tvlbot.jpg chore(users/tazjin): Add avatar for tvlbot 2020-06-14 22:23:04 +00:00