add initial lambda support

No closures for now, but solid groundwork is laid.
This commit was merged in pull request #11.
This commit is contained in:
2025-09-26 16:53:38 +03:00
committed by Pavel Kulyov
parent d87f0ba161
commit 442f663635
2 changed files with 91 additions and 14 deletions

31
example/lambdas.sex Normal file
View File

@@ -0,0 +1,31 @@
(include stdio.h)
(fn int sum ((int a) (int b))
(return (+ a b)))
(pub fn int main ()
(var int a 10)
(var int b 20)
(var (fn int ((int) (int))) sum-fn sum)
(var (fn int ((int) (int))) sum-lambda
(lambda int ((int a) (int b)) ()
(return (+ a b))))
(var (fn int ((int))) sum-lambda-2
(lambda int ((int a)) ()
(return (+ a 20))))
(printf "Hello from main fn!\n")
(printf "We will now perform some function calling.\n")
(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 int ((int a) (int b)) ()
(return (+ a b 100)))
a b))
(return 0))