aboutsummaryrefslogtreecommitdiffstats
path: root/examples/variables.bdl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/variables.bdl')
-rw-r--r--examples/variables.bdl80
1 files changed, 35 insertions, 45 deletions
diff --git a/examples/variables.bdl b/examples/variables.bdl
index 2e2543a..7b343d1 100644
--- a/examples/variables.bdl
+++ b/examples/variables.bdl
@@ -2,64 +2,55 @@
2;; Variable declarations and updates 2;; Variable declarations and updates
3;; 3;;
4 4
5(supress-errors true) 5(print "(def a 20)") (def a 20) (newline)
6(print "(error? (def a 1)) -> ") (error? (def a 1)) 6(print "((lambda (a b) (+ 10 a b)) 1 2) -> ") ((lambda (a b) (+ 10 a b)) 1 2)
7(print "a -> ") a 7(print "((lambda (a b) (+ 10 a b)) a 3) -> ") ((lambda (a b) (+ 10 a b)) a 3)
8(print "(error? (def a 300)) -> ") (error? (def a 300)) 8(print "(def myfun (lambda (a b) (+ a b))) (myfun 6 9) -> ") (def myfun (lambda (a b) (+ a b))) (myfun 6 9)
9(print "a -> ") a 9(print "(fun myfun (a b) (+ a b)) (myfun 6 9) -> ") (fun myfun (a b) (+ a b)) (myfun 6 9)
10(print "(error? (def a \"strings\")) -> ") (error? (def a "strings")) 10(print "(+ 1 (myfun 10 (myfun a a)) 30) -> ") (+ 1 (myfun 10 (myfun a a)) 30)
11(print "a -> ") a 11(print "(myfun 10 (myfun 5 0)) -> ") (myfun 10 (myfun 5 0))
12(print "(error? (def a 1)) -> ") (error? (def a '(quoted symbols 123 or "strings")))
13(print "a -> ") a
14(print "(error? (set! a 42)) -> ") (error? (set! a 42))
15(print "a -> ") a
16(print "(error? (set! b 99)) -> ") (error? (set! b 99))
17(lambda (a b) (+ 10 a b))
18
19(def a 20)
20((lambda (a b) (+ 10 a b)) 1 2)
21((lambda (a b) (+ 10 a b)) a 3)
22(def myfun (lambda (a b) (+ a b)))
23(myfun 6 9)
24(+ 1 (myfun 10 (myfun a a)) 30)
25(myfun 10 (myfun 5 0))
26 12
27;; Closures. 13;; Closures.
28(def make-counter (lambda () 14(print "(fun make-counter () (def value 0) (def counter (lambda () (set! value (+ value 1)) value)) counter)")
15(newline)
16(fun make-counter ()
29 (def value 0) 17 (def value 0)
30 (def counter (lambda () 18 (def counter (lambda ()
31 (set! value (+ value 1)) 19 (set! value (+ value 1))
32 value)) 20 value))
33 counter)) 21 counter)
34 22
35(def counter-a (make-counter)) 23(print "(def counter-a (make-counter))") (def counter-a (make-counter)) (newline)
36(def counter-b (make-counter)) 24(print "(def counter-b (make-counter))") (def counter-b (make-counter)) (newline)
37(counter-a) 25(print "(counter-a) -> ") (counter-a)
38(counter-a) 26(print "(counter-b) -> ") (counter-b)
39(counter-b) 27(print "(counter-a) -> ") (counter-a)
40(counter-b) 28(print "(counter-a) -> ") (counter-a)
41(counter-b) 29(print "(counter-a) -> ") (counter-a)
42(counter-b) 30(print "(counter-b) -> ") (counter-b)
43(counter-a) 31(print "(counter-b) -> ") (counter-b)
32(print "(counter-b) -> ") (counter-b)
44 33
45;; Fibonacci. 34;; Fibonacci.
46(def fib (lambda (n) 35(print "(fun fib (n) (if (<= n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))") (newline)
47 (if (<= n 2) 36(fun fib (n)
48 1 37 (if (<= n 2)
49 (+ (fib (- n 1)) (fib (- n 2)))))) 38 1
50(fib 15) 39 (+ (fib (- n 1)) (fib (- n 2)))))
40
41(print "(fib 15) -> ")(fib 15)
51 42
52;; Lambda capture. 43;; Lambda capture.
53(def a 20) 44(print "(fun b () (display a) (print \" --- \") (def a 42) (display a) (newline))") (newline)
54(def b (lambda () 45(fun b ()
55 (display a) 46 (display a)
56 (newline) 47 (print " --- ")
57 (def a 42) 48 (def a 42)
58 (display a) 49 (display a)
59 (newline))) 50 (newline))
60 51
61(b) 52(print "(b) -> ") (b)
62(b) 53(print "(b) -> ") (b)
63 54
64 55
65;; Infinite loop. (For teseting purposes) 56;; Infinite loop. (For teseting purposes)
@@ -68,5 +59,4 @@
68; (if (<= n 2) 59; (if (<= n 2)
69; 'ok 60; 'ok
70; (test (+ n 1))))) 61; (test (+ n 1)))))
71
72; (test 3) 62; (test 3)