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

@@ -10,12 +10,12 @@
(var sum-lambda (fn ((int) (int)) int)
(lambda ((a int) (b int)) int ()
(lambda ((a int) (b int)) int
(return (+ a b))))
(var sum-lambda-2 (fn ((int)) int)
(lambda ((a int)) int ()
(lambda ((a int)) int
(return (+ a 20))))
(printf "Hello from main fn!\n")
@@ -24,28 +24,25 @@
(printf "Calling fn ptr: %d\n" (sum-fn a b))
(printf "Calling lambda: %d\n" (sum-lambda a b))
(printf "Calling other lambda: %d\n" (sum-lambda-2 a))
(printf "Calling lambda inplace: %d\n" ((lambda ((a int) (b int)) int ()
(printf "Calling lambda inplace: %d\n" ((lambda ((a int) (b int)) int
(return (+ a b 100)))
a b))
(var l-1 (fn ((int)) int)
(lambda ((a int)) int ()
(lambda ((a int)) int
(var l-2 (fn ((int)) int)
(lambda ((a int)) int ()
(lambda ((a int)) int
(return (+ 60 a))))
(return (+ 600 (l-2 a)))))
(printf "Calling nested lambdas: %d\n" (l-1 6))
;; Not supported yet
;; Closure
;; (var (fn (fn ((int)) int) ((int))) make-adder
;; (lambda (fn int ((int a))) ()
;; (return (lambda int ((int b)) (a)
;; (return (+ a b))))))
;; Not supported yet -- captures belong to `closure' now, see
;; Function-values.org
;; (fn make-adder ((a int)) (closure ((int)) int)
;; (return (closure ((b int)) int (a)
;; (return (+ a b)))))
;;
;; (var (fn int ((int))) add-10
;; (make-adder 10))
;; (var (fn int ((int))) add-20
;; (make-adder 20))
;; (printf "Calling closures: %d\n" (add-10 24))
;; (var add-10 (closure ((int)) int) (make-adder 10))
;; (var add-20 (closure ((int)) int) (make-adder 20))
;; (printf "Calling closures: %d %d\n" (add-10 24) (add-20 24))
(return 0))