feat(tvix/eval): implement capture of self-recursive upvalues

With this change, it becomes possible for functions to call themselves
as they are being defined in local bindings.

Change-Id: Ib46a39ba17b1452b5673d96fa729d633d237241a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6314
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
Vincent Ambo 2022-08-27 22:58:39 +03:00 committed by tazjin
parent 06b07f5c47
commit ae531a2245
4 changed files with 22 additions and 7 deletions

View file

@ -0,0 +1 @@
"done"

View file

@ -0,0 +1,4 @@
let
# self-recursive function should be able to close over itself
f = n: if n <= 0 then "done" else f (n - 1);
in f 10