1
0
forked from alex-eg/sex

remove capture list from lambdas, they are always pure

Explicitly rename capturing lambdas to closures, they will be
implemented later
This commit is contained in:
2026-09-29 16:09:51 +03:00
parent ca88d9b386
commit aa5cfc1b7d
3 changed files with 20 additions and 25 deletions

View File

@@ -22,21 +22,21 @@
(printf "Named fn through a pointer: %d\n" (sum-fn a b))
(var sum-lambda (fn ((int) (int)) int)
(lambda ((a int) (b int)) int ()
(lambda ((a int) (b int)) int
(return (+ a b))))
(printf "Lambda through a pointer: %d\n" (sum-lambda a b))
(printf "Lambda called in place: %d\n"
((lambda ((a int) (b int)) int ()
((lambda ((a int) (b int)) int
(return (+ a b 100)))
a b))
;; A lambda inside a lambda: the inner one is lifted out of a
;; function that is itself being lifted
(var outer (fn ((int)) int)
(lambda ((x int)) int ()
(lambda ((x int)) int
(var inner (fn ((int)) int)
(lambda ((y int)) int ()
(lambda ((y int)) int
(return (+ 60 y))))
(return (+ 600 (inner x)))))
(printf "Nested lambdas: %d\n" (outer 6))