aboutsummaryrefslogtreecommitdiffstats
path: root/examples/booleans.bdl
blob: 3d647a6b9c221092e83b9cae533ae2604ee06582 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
;;
;; Boolean primitives.
;;

;; Not.
(print "(not true) -> ")             (display (not true))(newline)
(print "(not false) -> ")            (display (not false))(newline)
(print "(not (not true)) -> ")       (display (not (not true)))(newline)
(print "(not (not false)) -> ")      (display (not (not false)))(newline)
(print "(not 1) -> ")                (display (not 1))(newline)
(print "(not (not 1)) -> ")          (display (not (not 1)))(newline)
(print "(not \"string\") -> ")       (display (not "string"))(newline)
(print "(not (not \"string\")) -> ") (display (not (not "string")))(newline)

;; And.
(print "(and 1 \"string\" 4 true) -> ")   (display (and 1 "string" 4 true))(newline)
(print "(and true true true) -> ")        (display (and true true true))(newline)
; (print "(and (+ 1 2 3)) -> ")             (display (and (+ 1 2 3)))(newline)
(print "(and false false false) -> ")     (display (and false false false))(newline)
(print "(and true false false) -> ")      (display (and true false false))(newline)
(print "(and false true false) -> ")      (display (and false true false))(newline)
(print "(and false true true) -> ")       (display (and false true true))(newline)
(print "(and (not false) true true) -> ") (display (and (not false) true true))(newline)

;; Or.
(print "(or 1 \"string\" 4 true) -> ")   (display (or 1 "string" 4 true))(newline)
(print "(or false 1) -> ")               (display (or false 1))(newline)
(print "(or false \"string\") -> ")      (display (or false "string"))(newline)
; (print "(or false) -> ")                 (display (or false))(newline)
(print "(or true true true) -> ")        (display (or true true true))(newline)
(print "(or false false false) -> ")     (display (or false false false))(newline)
(print "(or true false false) -> ")      (display (or true false false))(newline)
(print "(or false true false) -> ")      (display (or false true false))(newline)
(print "(or false true true) -> ")       (display (or false true true))(newline)
(print "(or (not false) true true) -> ") (display (or (not false) true true))(newline)
(print "(or (not true) false) -> ")      (display (or (not true) false))(newline)

;; If.
(print "(if true true false) -> ")                          (display (if true true false))(newline)
(print "(if false true false) -> ")                         (display (if false true false))(newline)
(print "(if true (+ 1 2 3) 0) -> ")                         (display (if true (+ 1 2 3) 0))(newline)
(print "(if false (+ 1 2 3) 0) -> ")                        (display (if false (+ 1 2 3) 0))(newline)
(print "(if (or true false) (+ 1 2 3) (+ 7 8 9)) -> ")      (display (if (or true false) (+ 1 2 3) (+ 7 8 9)))(newline)
(print "(if (or false false) (+ 1 2 3) (+ 7 8 9)) -> ")     (display (if (or false false) (+ 1 2 3) (+ 7 8 9)))(newline)
(print "(if (or (+ 1 2 3) false) (+ 1 2 3) (+ 7 8 9)) -> ") (display (if (or (+ 1 2 3) false) (+ 1 2 3) (+ 7 8 9)))(newline)
(print "(if true 7) -> ")                                   (display (if true 7))(newline)
(print "(if false 7) -> ")                                  (display (if false 7))(newline)

; ; ;; Cond.
; ; (print "(cond ((and true true true) 1) ((or true true false) 2) (else 3)) -> ")
; ; (cond ((and true true true) 1)
; ;       ((or true true false) 2)
; ;       (else 3))
; ; (print "(cond ((and true true false) 1) ((or true true false) 2) (else 3)) -> ")
; ; (cond ((and true true false) 1)
; ;       ((or true true false) 2)
; ;       (else 3))
; ; (print "(cond ((and true true false) 1) ((or false false false) 2) (else 3)) -> ")
; ; (cond ((and true true false) 1)
; ;       ((or false false false) 2)
; ;       (else 3))
; ; (print "(cond ((and true true true) 1) ((or true true false) 2)) -> ")
; ; (cond ((and true true false) 1)
; ;       ((or false false false) 2)) (newline)
; ; (print "(cond ((and true true true) (+ 1 2 3)) ((or true true false) 2) (else 3)) -> ")
; ; (cond ((and true true true) (+ 1 2 3))
; ;       ((or true true false) 2)
; ;       (else 3))

;; Numeric comparisons.
(print "(< 1 2 3) -> ")             (display (< 1 2 3))(newline)
(print "(< 3 2 1) -> ")             (display (< 3 2 1))(newline)
(print "(> 1 2 3) -> ")             (display (> 1 2 3))(newline)
(print "(> 3 2 1) -> ")             (display (> 3 2 1))(newline)
(print "(= 1 2 3) -> ")             (display (= 1 2 3))(newline)
(print "(= 3 2 1) -> ")             (display (= 3 2 1))(newline)
(print "(= 3 3 3) -> ")             (display (= 3 3 3))(newline)
(print "(= (+ 1 2) 3 (- 6 3)) -> ") (display (= (+ 1 2) 3 (- 6 3)))(newline)
(print "(< 1 1 3) -> ")             (display (< 1 1 3))(newline)
(print "(<= 1 1 3) -> ")            (display (<= 1 1 3))(newline)
(print "(> 3 3 1) -> ")             (display (> 3 3 1))(newline)
(print "(>= 3 3 1) -> ")            (display (>= 3 3 1))(newline)