forked from alex-eg/sex
39 lines
1.1 KiB
Scheme
39 lines
1.1 KiB
Scheme
(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))
|
|
|
|
(var (fn int ((int))) l-1
|
|
(lambda int ((int a)) ()
|
|
(var (fn int ((int))) l-2
|
|
(lambda int ((int a)) ()
|
|
(return (+ 60 a))))
|
|
(return (+ 600 (l-2 a)))))
|
|
(printf "Calling nested lambdas: %d\n" (l-1 6))
|
|
(return 0))
|