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:
31
example/lambdas.sex
Normal file
31
example/lambdas.sex
Normal 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))
|
||||
Reference in New Issue
Block a user