aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-10 18:41:31 +0200
committerBad Diode <bd@badd10de.dev>2021-10-10 18:41:31 +0200
commit581116c655df4eb753098e013dd5854df95f7865 (patch)
tree5439c196d27ef7d6fe93f96b006f2cca24d8170f /examples
parent43861f9d91782d864dc9866eee1d39288bb3a76d (diff)
downloadbdl-581116c655df4eb753098e013dd5854df95f7865.tar.gz
bdl-581116c655df4eb753098e013dd5854df95f7865.zip
Add type introspection functions and tests
Diffstat (limited to 'examples')
-rw-r--r--examples/booleans.bdl9
-rw-r--r--examples/types.bdl73
2 files changed, 73 insertions, 9 deletions
diff --git a/examples/booleans.bdl b/examples/booleans.bdl
index 8828ac2..e38fb1f 100644
--- a/examples/booleans.bdl
+++ b/examples/booleans.bdl
@@ -2,15 +2,6 @@
2;; Boolean primitives. 2;; Boolean primitives.
3;; 3;;
4 4
5;; Boolean test.
6(print "(boolean? true) -> ") (boolean? true)
7(print "(boolean? false) -> ") (boolean? false)
8(print "(boolean? 1) -> ") (boolean? 1)
9(print "(boolean? 5) -> ") (boolean? 5)
10(print "(boolean? \"string\") -> ") (boolean? "string")
11(print "(boolean? (+ 1 2 3)) -> ") (boolean? (+ 1 2 3))
12(print "(boolean? (not 1)) -> ") (boolean? (not 1))
13
14;; Not. 5;; Not.
15(print "(not true) -> ") (not true) 6(print "(not true) -> ") (not true)
16(print "(not false) -> ") (not false) 7(print "(not false) -> ") (not false)
diff --git a/examples/types.bdl b/examples/types.bdl
new file mode 100644
index 0000000..43b7be9
--- /dev/null
+++ b/examples/types.bdl
@@ -0,0 +1,73 @@
1;;
2;; Type testing.
3;;
4
5;; Boolean.
6(print "(boolean? true) -> ") (boolean? true)
7(print "(boolean? false) -> ") (boolean? false)
8(print "(boolean? 1) -> ") (boolean? 1)
9(print "(boolean? 5) -> ") (boolean? 5)
10(print "(boolean? \"string\") -> ") (boolean? "string")
11(print "(boolean? (+ 1 2 3)) -> ") (boolean? (+ 1 2 3))
12(print "(boolean? (not 1)) -> ") (boolean? (not 1))
13
14;; Empty list/null.
15(print "(null? true) -> ") (null? true)
16(print "(null? false) -> ") (null? false)
17(print "(null? 1) -> ") (null? 1)
18(print "(null? 5) -> ") (null? 5)
19(print "(null? \"string\") -> ") (null? "string")
20(print "(null? (+ 1 2 3)) -> ") (null? (+ 1 2 3))
21(print "(null? (not 1)) -> ") (null? (not 1))
22(print "(null? ()) -> ") (null? ())
23
24;; String.
25(print "(string? true) -> ") (string? true)
26(print "(string? false) -> ") (string? false)
27(print "(string? 1) -> ") (string? 1)
28(print "(string? 5) -> ") (string? 5)
29(print "(string? \"string\") -> ") (string? "string")
30(print "(string? (+ 1 2 3)) -> ") (string? (+ 1 2 3))
31(print "(string? (not 1)) -> ") (string? (not 1))
32
33;; Fixnum.
34(print "(fixnum? true) -> ") (fixnum? true)
35(print "(fixnum? false) -> ") (fixnum? false)
36(print "(fixnum? 1) -> ") (fixnum? 1)
37(print "(fixnum? 5) -> ") (fixnum? 5)
38(print "(fixnum? \"string\") -> ") (fixnum? "string")
39(print "(fixnum? (+ 1 2 3)) -> ") (fixnum? (+ 1 2 3))
40(print "(fixnum? (not 1)) -> ") (fixnum? (not 1))
41
42;; Symbol
43;; TODO: We need quotation to test for symbols.
44(print "(symbol? true) -> ") (symbol? true)
45(print "(symbol? false) -> ") (symbol? false)
46(print "(symbol? 1) -> ") (symbol? 1)
47(print "(symbol? +) -> ") (symbol? +)
48(print "(symbol? \"string\") -> ") (symbol? "string")
49(print "(symbol? (+ 1 2 3)) -> ") (symbol? (+ 1 2 3))
50(print "(symbol? (not 1)) -> ") (symbol? (not 1))
51; (print "(symbol? 'a) -> ") (symbol? 'a)
52; (print "(symbol? 'c) -> ") (symbol? 'c)
53
54;; Pair.
55(print "(pair? false) -> ") (pair? false)
56(print "(pair? 1) -> ") (pair? 1)
57(print "(pair? 5) -> ") (pair? 5)
58(print "(pair? \"string\") -> ") (pair? "string")
59(print "(pair? (+ 1 2 3)) -> ") (pair? (+ 1 2 3))
60(print "(pair? (not 1)) -> ") (pair? (not 1))
61(print "(pair? (cons 1 2)) -> ") (pair? (cons 1 2))
62(print "(pair? (list 1 2 3)) -> ") (pair? (list 1 2 3))
63
64; ;; Procedure.
65(print "(procedure? false) -> ") (procedure? false)
66(print "(procedure? 1) -> ") (procedure? 1)
67(print "(procedure? 5) -> ") (procedure? 5)
68(print "(procedure? \"string\") -> ") (procedure? "string")
69(print "(procedure? (+ 1 2 3)) -> ") (procedure? (+ 1 2 3))
70(print "(procedure? (not 1)) -> ") (procedure? (not 1))
71(print "(procedure? +) -> ") (procedure? +)
72(print "(procedure? -) -> ") (procedure? -)
73(print "(procedure? procedure?) -> ") (procedure? procedure?)