From 0ff1716f45c9494b1aa02b8ddb2541821480c5ad Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 28 Oct 2021 13:34:18 +0200 Subject: Fix difference between lambda and named func calls --- examples/variables.bdl | 58 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 18 deletions(-) (limited to 'examples/variables.bdl') diff --git a/examples/variables.bdl b/examples/variables.bdl index 7b343d1..a4dea0a 100644 --- a/examples/variables.bdl +++ b/examples/variables.bdl @@ -2,13 +2,35 @@ ;; Variable declarations and updates ;; -(print "(def a 20)") (def a 20) (newline) -(print "((lambda (a b) (+ 10 a b)) 1 2) -> ") ((lambda (a b) (+ 10 a b)) 1 2) -(print "((lambda (a b) (+ 10 a b)) a 3) -> ") ((lambda (a b) (+ 10 a b)) a 3) -(print "(def myfun (lambda (a b) (+ a b))) (myfun 6 9) -> ") (def myfun (lambda (a b) (+ a b))) (myfun 6 9) -(print "(fun myfun (a b) (+ a b)) (myfun 6 9) -> ") (fun myfun (a b) (+ a b)) (myfun 6 9) -(print "(+ 1 (myfun 10 (myfun a a)) 30) -> ") (+ 1 (myfun 10 (myfun a a)) 30) -(print "(myfun 10 (myfun 5 0)) -> ") (myfun 10 (myfun 5 0)) +(print "(def a 20)") +(def a 20) +(newline) + +(print "((lambda (a b) (+ 10 a b)) 1 2) -> ") +(display ((lambda (a b) (+ 10 a b)) 1 2)) +(newline) + +(print "((lambda (a b) (+ 10 a b)) a 3) -> ") +(display ((lambda (a b) (+ 10 a b)) a 3)) +(newline) + +(print "(def myfun (lambda (a b) (+ a b))) (myfun 6 9) -> ") +(def myfun (lambda (a b) (+ a b))) +(display (myfun 6 9)) +(newline) + +(print "(fun myfun (a b) (+ a b)) (myfun 6 9) -> ") +(fun myfun (a b) (+ a b)) +(display (myfun 6 9)) +(newline) + +(print "(+ 1 (myfun 10 (myfun a a)) 30) -> ") +(display (+ 1 (myfun 10 (myfun a a)) 30)) +(newline) + +(print "(myfun 10 (myfun 5 0)) -> ") +(display (myfun 10 (myfun 5 0))) +(newline) ;; Closures. (print "(fun make-counter () (def value 0) (def counter (lambda () (set! value (+ value 1)) value)) counter)") @@ -22,14 +44,14 @@ (print "(def counter-a (make-counter))") (def counter-a (make-counter)) (newline) (print "(def counter-b (make-counter))") (def counter-b (make-counter)) (newline) -(print "(counter-a) -> ") (counter-a) -(print "(counter-b) -> ") (counter-b) -(print "(counter-a) -> ") (counter-a) -(print "(counter-a) -> ") (counter-a) -(print "(counter-a) -> ") (counter-a) -(print "(counter-b) -> ") (counter-b) -(print "(counter-b) -> ") (counter-b) -(print "(counter-b) -> ") (counter-b) +(print "(counter-a) -> ") (display (counter-a))(newline) +(print "(counter-b) -> ") (display (counter-b))(newline) +(print "(counter-a) -> ") (display (counter-a))(newline) +(print "(counter-a) -> ") (display (counter-a))(newline) +(print "(counter-a) -> ") (display (counter-a))(newline) +(print "(counter-b) -> ") (display (counter-b))(newline) +(print "(counter-b) -> ") (display (counter-b))(newline) +(print "(counter-b) -> ") (display (counter-b))(newline) ;; Fibonacci. (print "(fun fib (n) (if (<= n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))") (newline) @@ -38,7 +60,8 @@ 1 (+ (fib (- n 1)) (fib (- n 2))))) -(print "(fib 15) -> ")(fib 15) +(print "(fib 15) -> ") +(display (fib 15))(newline) ;; Lambda capture. (print "(fun b () (display a) (print \" --- \") (def a 42) (display a) (newline))") (newline) @@ -52,11 +75,10 @@ (print "(b) -> ") (b) (print "(b) -> ") (b) - ;; Infinite loop. (For teseting purposes) ; (def test (lambda (n) ; (print "ITER\n") ; (if (<= n 2) -; 'ok +; 1 ; (test (+ n 1))))) ; (test 3) -- cgit v1.2.1