shen-ruby 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.md +5 -0
  3. data/README.md +8 -12
  4. data/Rakefile +4 -9
  5. data/bin/shen_test_suite.rb +0 -1
  6. data/bin/srrepl +2 -4
  7. data/lib/shen_ruby/shen.rb +98 -0
  8. data/lib/shen_ruby/version.rb +1 -1
  9. data/shen-ruby.gemspec +3 -3
  10. data/shen/README.txt +9 -13
  11. data/shen/release/BSD +24 -0
  12. data/shen/release/klambda/core.kl +157 -0
  13. data/shen/release/klambda/declarations.kl +109 -0
  14. data/shen/release/klambda/load.kl +59 -0
  15. data/shen/release/klambda/macros.kl +91 -0
  16. data/shen/release/klambda/prolog.kl +228 -0
  17. data/shen/release/klambda/reader.kl +198 -0
  18. data/shen/release/klambda/sequent.kl +142 -0
  19. data/shen/release/klambda/sys.kl +253 -0
  20. data/shen/release/klambda/t-star.kl +123 -0
  21. data/shen/release/klambda/toplevel.kl +110 -0
  22. data/shen/release/klambda/track.kl +79 -0
  23. data/shen/release/{k_lambda → klambda}/types.kl +41 -63
  24. data/shen/release/klambda/writer.kl +81 -0
  25. data/shen/release/klambda/yacc.kl +87 -0
  26. data/shen/release/license.pdf +0 -0
  27. data/shen/release/test_programs/Chap13/problems.txt +26 -26
  28. data/shen/release/test_programs/README.shen +52 -52
  29. data/shen/release/test_programs/TinyLispFunctions.txt +15 -15
  30. data/shen/release/test_programs/TinyTypes.shen +55 -55
  31. data/shen/release/test_programs/binary.shen +24 -24
  32. data/shen/release/test_programs/bubble_version_1.shen +28 -28
  33. data/shen/release/test_programs/bubble_version_2.shen +22 -22
  34. data/shen/release/test_programs/calculator.shen +21 -21
  35. data/shen/release/test_programs/cartprod.shen +23 -23
  36. data/shen/release/test_programs/change.shen +25 -25
  37. data/shen/release/test_programs/classes-defaults.shen +94 -94
  38. data/shen/release/test_programs/classes-inheritance.shen +100 -100
  39. data/shen/release/test_programs/classes-typed.shen +74 -74
  40. data/shen/release/test_programs/classes-untyped.shen +46 -46
  41. data/shen/release/test_programs/depth_.shen +14 -14
  42. data/shen/release/test_programs/einstein.shen +34 -34
  43. data/shen/release/test_programs/fruit_machine.shen +46 -46
  44. data/shen/release/test_programs/interpreter.shen +217 -217
  45. data/shen/release/test_programs/metaprog.shen +85 -85
  46. data/shen/release/test_programs/minim.shen +192 -192
  47. data/shen/release/test_programs/mutual.shen +11 -11
  48. data/shen/release/test_programs/n_queens.shen +45 -45
  49. data/shen/release/test_programs/newton_version_1.shen +33 -33
  50. data/shen/release/test_programs/newton_version_2.shen +24 -24
  51. data/shen/release/test_programs/parse.prl +14 -14
  52. data/shen/release/test_programs/parser.shen +51 -51
  53. data/shen/release/test_programs/powerset.shen +10 -10
  54. data/shen/release/test_programs/prime.shen +10 -10
  55. data/shen/release/test_programs/prolog.shen +78 -78
  56. data/shen/release/test_programs/proof_assistant.shen +80 -80
  57. data/shen/release/test_programs/proplog_version_1.shen +25 -25
  58. data/shen/release/test_programs/proplog_version_2.shen +27 -27
  59. data/shen/release/test_programs/qmachine.shen +66 -66
  60. data/shen/release/test_programs/red-black.shen +54 -54
  61. data/shen/release/test_programs/search.shen +55 -55
  62. data/shen/release/test_programs/semantic_net.shen +44 -44
  63. data/shen/release/test_programs/spreadsheet.shen +34 -34
  64. data/shen/release/test_programs/stack.shen +27 -27
  65. data/shen/release/test_programs/streams.shen +20 -20
  66. data/shen/release/test_programs/strings.shen +57 -57
  67. data/shen/release/test_programs/structures-typed.shen +71 -71
  68. data/shen/release/test_programs/structures-untyped.shen +41 -41
  69. data/shen/release/test_programs/tests.shen +232 -232
  70. data/shen/release/test_programs/types.shen +11 -11
  71. data/shen/release/test_programs/whist.shen +239 -239
  72. data/shen/release/test_programs/yacc.shen +132 -132
  73. metadata +21 -35
  74. data/shen/lib/shen_ruby/shen.rb +0 -160
  75. data/shen/license.txt +0 -34
  76. data/shen/release/benchmarks/N_queens.shen +0 -45
  77. data/shen/release/benchmarks/README.shen +0 -14
  78. data/shen/release/benchmarks/benchmarks.shen +0 -52
  79. data/shen/release/benchmarks/bigprog +0 -2173
  80. data/shen/release/benchmarks/einstein.shen +0 -33
  81. data/shen/release/benchmarks/heatwave.gif +0 -0
  82. data/shen/release/benchmarks/interpreter.shen +0 -219
  83. data/shen/release/benchmarks/jnk.shen +0 -194
  84. data/shen/release/benchmarks/picture.jpg +0 -0
  85. data/shen/release/benchmarks/plato.jpg +0 -0
  86. data/shen/release/benchmarks/powerset.shen +0 -10
  87. data/shen/release/benchmarks/prime.shen +0 -10
  88. data/shen/release/benchmarks/short.shen +0 -129
  89. data/shen/release/benchmarks/text.txt +0 -68
  90. data/shen/release/k_lambda/core.kl +0 -181
  91. data/shen/release/k_lambda/declarations.kl +0 -131
  92. data/shen/release/k_lambda/load.kl +0 -84
  93. data/shen/release/k_lambda/macros.kl +0 -112
  94. data/shen/release/k_lambda/prolog.kl +0 -252
  95. data/shen/release/k_lambda/reader.kl +0 -222
  96. data/shen/release/k_lambda/sequent.kl +0 -166
  97. data/shen/release/k_lambda/sys.kl +0 -271
  98. data/shen/release/k_lambda/t-star.kl +0 -139
  99. data/shen/release/k_lambda/toplevel.kl +0 -135
  100. data/shen/release/k_lambda/track.kl +0 -103
  101. data/shen/release/k_lambda/writer.kl +0 -105
  102. data/shen/release/k_lambda/yacc.kl +0 -113
@@ -1,71 +1,71 @@
1
- (define defstruct
2
- Name Slots
3
- -> (let Attributes (map (function fst) Slots)
4
- Types (map (function snd) Slots)
5
- Selectors (selectors Name Attributes)
6
- Constructor (constructor Name Attributes)
7
- Recognisor (recognisor Name)
8
- ConstructorType (constructor-type Name Types)
9
- SelectorTypes (selector-types Name Attributes Types)
10
- RecognisorType (recognisor-type Name)
11
- Name))
12
-
13
- (define selector-types
14
- _ [] [] -> (gensym (protect X))
15
- Name [Attribute | Attributes] [Type | Types]
16
- -> (let Selector (concat Name (concat - Attribute))
17
- SelectorType [Name --> Type]
18
- TypeDecl (declare Selector SelectorType)
19
- (selector-types Name Attributes Types)))
20
-
21
- (define recognisor-type
22
- Name -> (let Recognisor (concat Name ?)
23
- (declare Recognisor [Name --> boolean])))
24
-
25
- (define constructor-type
26
- Name Types -> (let Constructor (concat make- Name)
27
- Type (assemble-type Types Name)
28
- (declare Constructor Type)))
29
-
30
- (define assemble-type
31
- [ ] Name -> Name
32
- [Type | Types] Name -> [Type --> (assemble-type Types Name)])
33
-
34
- (declare defstruct [symbol --> [list [symbol * symbol]] --> symbol])
35
-
36
- (define selectors
37
- Name Attributes -> (map (/. A (selector Name A)) Attributes))
38
-
39
- (define selector
40
- Name Attribute
41
- -> (let SelectorName (concat Name (concat - Attribute))
42
- (eval [define SelectorName
43
- (protect Structure) -> [let (protect LookUp) [assoc Attribute (protect Structure)]
44
- [if [empty? (protect LookUp)]
45
- [error "~A is not an attribute of ~A.~%"
46
- Attribute Name]
47
- [tail (protect LookUp)]]]])))
48
-
49
- (define constructor
50
- Name Attributes
51
- -> (let ConstructorName (concat make- Name)
52
- Parameters (params Attributes)
53
- (eval [define ConstructorName |
54
- (append Parameters
55
- [-> [cons [cons structure Name]
56
- (make-association-list Attributes
57
- Parameters)]])])))
58
-
59
- (define params
60
- [] -> []
61
- [_ | Attributes] -> [(gensym (protect X)) | (params Attributes)])
62
-
63
- (define make-association-list
64
- [] [] -> []
65
- [A | As] [P | Ps] -> [cons [cons A P] (make-association-list As Ps)])
66
-
67
- (define recognisor
68
- Name -> (let RecognisorName (concat Name ?)
69
- (eval [define RecognisorName
70
- [cons [cons structure Name] _] -> true
71
- _ -> false])))
1
+ (define defstruct
2
+ Name Slots
3
+ -> (let Attributes (map (function fst) Slots)
4
+ Types (map (function snd) Slots)
5
+ Selectors (selectors Name Attributes)
6
+ Constructor (constructor Name Attributes)
7
+ Recognisor (recognisor Name)
8
+ ConstructorType (constructor-type Name Types)
9
+ SelectorTypes (selector-types Name Attributes Types)
10
+ RecognisorType (recognisor-type Name)
11
+ Name))
12
+
13
+ (define selector-types
14
+ _ [] [] -> (gensym (protect X))
15
+ Name [Attribute | Attributes] [Type | Types]
16
+ -> (let Selector (concat Name (concat - Attribute))
17
+ SelectorType [Name --> Type]
18
+ TypeDecl (declare Selector SelectorType)
19
+ (selector-types Name Attributes Types)))
20
+
21
+ (define recognisor-type
22
+ Name -> (let Recognisor (concat Name ?)
23
+ (declare Recognisor [Name --> boolean])))
24
+
25
+ (define constructor-type
26
+ Name Types -> (let Constructor (concat make- Name)
27
+ Type (assemble-type Types Name)
28
+ (declare Constructor Type)))
29
+
30
+ (define assemble-type
31
+ [ ] Name -> Name
32
+ [Type | Types] Name -> [Type --> (assemble-type Types Name)])
33
+
34
+ (declare defstruct [symbol --> [list [symbol * symbol]] --> symbol])
35
+
36
+ (define selectors
37
+ Name Attributes -> (map (/. A (selector Name A)) Attributes))
38
+
39
+ (define selector
40
+ Name Attribute
41
+ -> (let SelectorName (concat Name (concat - Attribute))
42
+ (eval [define SelectorName
43
+ (protect Structure) -> [let (protect LookUp) [assoc Attribute (protect Structure)]
44
+ [if [empty? (protect LookUp)]
45
+ [error "~A is not an attribute of ~A.~%"
46
+ Attribute Name]
47
+ [tail (protect LookUp)]]]])))
48
+
49
+ (define constructor
50
+ Name Attributes
51
+ -> (let ConstructorName (concat make- Name)
52
+ Parameters (params Attributes)
53
+ (eval [define ConstructorName |
54
+ (append Parameters
55
+ [-> [cons [cons structure Name]
56
+ (make-association-list Attributes
57
+ Parameters)]])])))
58
+
59
+ (define params
60
+ [] -> []
61
+ [_ | Attributes] -> [(gensym (protect X)) | (params Attributes)])
62
+
63
+ (define make-association-list
64
+ [] [] -> []
65
+ [A | As] [P | Ps] -> [cons [cons A P] (make-association-list As Ps)])
66
+
67
+ (define recognisor
68
+ Name -> (let RecognisorName (concat Name ?)
69
+ (eval [define RecognisorName
70
+ [cons [cons structure Name] _] -> true
71
+ _ -> false])))
@@ -1,42 +1,42 @@
1
- (define defstruct
2
- Name Attributes -> (let Selectors (selectors Name Attributes)
3
- Constructor (constructor Name Attributes)
4
- Recognisor (recognisor Name)
5
- Name))
6
-
7
- (define selectors
8
- Name Attributes -> (map (/. A (selector Name A)) Attributes))
9
-
10
- (define selector
11
- Name Attribute
12
- -> (let SelectorName (concat Name (concat - Attribute))
13
- (eval [define SelectorName
14
- (protect Structure) -> [let (protect LookUp) [assoc Attribute (protect Structure)]
15
- [if [empty? (protect LookUp)]
16
- [error "~A is not an attribute of ~A.~%"
17
- Attribute Name]
18
- [tail (protect LookUp)]]]])))
19
-
20
- (define constructor
21
- Name Attributes
22
- -> (let ConstructorName (concat make- Name)
23
- Parameters (params Attributes)
24
- (eval [define ConstructorName |
25
- (append Parameters
26
- [-> [cons [cons structure Name]
27
- (make-association-list Attributes
28
- Parameters)]])])))
29
-
30
- (define params
31
- [] -> []
32
- [_ | Attributes] -> [(gensym (protect X)) | (params Attributes)])
33
-
34
- (define make-association-list
35
- [] [] -> []
36
- [A | As] [P | Ps] -> [cons [cons A P] (make-association-list As Ps)])
37
-
38
- (define recognisor
39
- Name -> (let RecognisorName (concat Name ?)
40
- (eval [define RecognisorName
41
- [cons [cons structure Name] _] -> true
1
+ (define defstruct
2
+ Name Attributes -> (let Selectors (selectors Name Attributes)
3
+ Constructor (constructor Name Attributes)
4
+ Recognisor (recognisor Name)
5
+ Name))
6
+
7
+ (define selectors
8
+ Name Attributes -> (map (/. A (selector Name A)) Attributes))
9
+
10
+ (define selector
11
+ Name Attribute
12
+ -> (let SelectorName (concat Name (concat - Attribute))
13
+ (eval [define SelectorName
14
+ (protect Structure) -> [let (protect LookUp) [assoc Attribute (protect Structure)]
15
+ [if [empty? (protect LookUp)]
16
+ [error "~A is not an attribute of ~A.~%"
17
+ Attribute Name]
18
+ [tail (protect LookUp)]]]])))
19
+
20
+ (define constructor
21
+ Name Attributes
22
+ -> (let ConstructorName (concat make- Name)
23
+ Parameters (params Attributes)
24
+ (eval [define ConstructorName |
25
+ (append Parameters
26
+ [-> [cons [cons structure Name]
27
+ (make-association-list Attributes
28
+ Parameters)]])])))
29
+
30
+ (define params
31
+ [] -> []
32
+ [_ | Attributes] -> [(gensym (protect X)) | (params Attributes)])
33
+
34
+ (define make-association-list
35
+ [] [] -> []
36
+ [A | As] [P | Ps] -> [cons [cons A P] (make-association-list As Ps)])
37
+
38
+ (define recognisor
39
+ Name -> (let RecognisorName (concat Name ?)
40
+ (eval [define RecognisorName
41
+ [cons [cons structure Name] _] -> true
42
42
  _ -> false])))
@@ -1,233 +1,233 @@
1
- (maxinferences 10000000000)
2
-
3
- (report prolog-tests
4
- (load "prolog.shen") loaded
5
- (prolog? (f a)) true
6
- (prolog? (g a)) false
7
- (prolog? (g b)) true
8
- (prolog? (mem 1 [X | 2]) (return X)) 1
9
- (prolog? (rev [1 2] X) (return X)) [2 1]
10
- (load "einstein.shen") loaded
11
- (prolog? (einsteins_riddle X) (return X)) german
12
- (prolog? (enjoys mark X) (return X)) chocolate
13
- (prolog? (fads mark)) [tea chocolate]
14
- (prolog? (prop [] [p <=> p])) true
15
- (prolog? (mapit consit [1 2 3] Out) (return Out)) [[1 1] [1 2] [1 3]]
16
- (prolog? (different a b)) true
17
- (prolog? (different a a)) false
18
- (prolog? (likes john Who) (return Who)) mary
19
- (load "parse.prl") loaded
20
- (prolog? (pparse ["the" + ["boy" + "jumps"]]
21
- [[s = [np + vp]]
22
- [np = [det + n]]
23
- [det = "the"]
24
- [n = "girl"]
25
- [n = "boy"]
26
- [vp = vintrans]
27
- [vp = [vtrans + np]]
28
- [vintrans = "jumps"]
29
- [vtrans = "likes"]
30
- [vtrans = "loves"]])) true)
31
-
32
- \* (report "FPQi chapter 2"
33
- (load "fruit_machine.shen") loaded
34
- (do (print (fruit-machine start)) ok) ok) *\
35
-
36
-
37
- (report "FPQi chapter 4"
38
- (load "cartprod.shen") loaded
39
- (cartesian-product [1 2 3] [1 2 3])
40
- [[1 1] [1 2] [1 3] [2 1] [2 2] [2 3] [3 1] [3 2] [3 3]]
41
- (load "powerset.shen") loaded
42
- (powerset [1 2 3]) [[1 2 3] [1 2] [1 3] [1] [2 3] [2] [3] []])
43
-
44
- (do (set *sprd* )
45
- (nl 2))
46
-
47
- (report "FPQi chapter 5"
48
-
49
- (load "bubble_version_1.shen") loaded
50
- (bubble-sort [1 2 3]) [3 2 1]
51
- (load "bubble_version_2.shen") loaded
52
- (bubble-sort [1 2 3]) [3 2 1]
53
- \* (load "newton_version_1.shen") loaded
54
- (newtons-method 4) 2
55
- (load "newton_version_2.shen") loaded
56
- (newtons-method 4) 2 *\
57
- (load "spreadsheet.shen") loaded
58
- (assess-spreadsheet [[jim [wages (/. Spreadsheet (get' frank wages Spreadsheet))]
59
- [tax (/. Spreadsheet (* (get' frank tax Spreadsheet) .8))]]
60
- [frank [wages 20000]
61
- [tax (/. Spreadsheet (* .25 (get' frank wages Spreadsheet)))]]])
62
-
63
- [[jim [wages 20000] [tax 4000.0]] [frank [wages 20000] [tax 5000.0]]] )
64
-
65
- (report "FPQi chapter 3"
66
-
67
- (load "prime.shen") loaded
68
- (prime? 1000003) true
69
- (load "mutual.shen") loaded
70
- (even? 56) true
71
- (odd? 77) true
72
- (load "change.shen") loaded
73
- (count-change 100) 4563
74
- )
75
-
76
- (report "FPQi chapter 6"
77
- (load "semantic_net.shen") loaded
78
- (clear Mark_Tarver) []
79
- (clear man) []
80
- (assert [Mark_Tarver is_a man]) [man]
81
- (assert [man type_of human]) [human]
82
- (query [is Mark_Tarver human]) yes)
83
-
84
- (report "FPQi chapter 7"
85
-
86
- (load "proplog_version_1.shen") loaded
87
- (backchain q [[q <= p] [q <= r] [r <=]]) proved
88
- (backchain q [[q <= p] [q <= r]]) (fail)
89
- (load "proplog_version_2.shen") loaded
90
- (backchain q [[q <= p] [q <= r] r]) true
91
- (backchain q [[q <= p] [q <= r]]) false
92
- )
93
-
94
- (report "FPQi chapter 8"
95
-
96
- (load "metaprog.shen") loaded
97
- (generate_parser [sent --> np vp np --> name np --> det n
98
- name --> "John" name --> "Bill"
99
- name --> "Tom" det --> "the" det --> "a"
100
- det --> "that" det --> "this"
101
- n --> "girl" n --> "ball"
102
- vp --> vtrans np vp --> vintrans
103
- vtrans --> "kicks" vtrans --> "likes"
104
- vintrans --> "jumps" vintrans --> "flies"]) [sent np name det n vp vtrans vintrans]
105
-
106
- )
107
-
108
- (report "chapter 11"
109
- (load "binary.shen") loaded
110
- (complement [1 0]) [0 1]
111
- (load "streams.shen") loaded
112
- (fst (delay (@p 0 (+ 1) (/. X false)))) 1)
113
-
114
- (report "strings"
115
- (load "strings.shen") loaded
116
- (subst-string "a" "b" "cba") "caa"
117
- (strlen "123") 3
118
- (trim-string-left [" "] " hi ") "hi "
119
- (trim-string-right [" "] " hi ") " hi"
120
- (trim-string [" "] " hi ") "hi"
121
- (reverse-string "abc") "cba"
122
- (alldigits? "123") true)
123
-
124
- (report "calculator.shen - chapter 11"
125
- (load "calculator.shen") loaded
126
- (do-calculation [[num 12] + [[num 7] * [num 4]]]) 40 )
127
-
128
- (report "structures 1 - chapter 12"
129
- (load "structures-untyped.shen") loaded
130
- (defstruct ship [length name]) ship
131
- (make-ship 200 "Mary Rose") [[structure | ship] [length | 200] [name | "Mary Rose"]]
132
- (ship-length (make-ship 200 "Mary Rose")) 200
133
- (ship-name (make-ship 200 "Mary Rose")) "Mary Rose" )
134
-
135
- (report "structures 2 - chapter 12"
136
- (load "structures-typed.shen") loaded
137
- (defstruct ship [(@p length number) (@p name string)]) ship
138
- (make-ship 200 "Mary Rose") [[structure | ship] [length | 200] [name | "Mary Rose"]]
139
- (ship-length (make-ship 200 "Mary Rose")) 200
140
- (ship-name (make-ship 200 "Mary Rose")) "Mary Rose")
141
-
142
- (report "classes 1 - chapter 12"
143
- (load "classes-untyped.shen") loaded
144
- (defclass ship [length name]) ship
145
- (set s (make-instance ship)) [[class | ship] [length | fail] [name | fail]]
146
- (has-value? length (value s)) false
147
- (set s (change-value (value s) length 100)) [[class | ship] [length | 100] [name | fail]]
148
- (get-value length (value s)) 100)
149
-
150
- (report "classes 2 - chapter 12"
151
- (load "classes-typed.shen") loaded
152
- (defclass ship [(@p length number) (@p name string)]) ship
153
- (has-value? length (make-instance ship)) false
154
- (change-value (make-instance ship) length 100) [[class | ship] [length | 100] [name | fail]]
155
- (get-value length (change-value (make-instance ship) length 100)) 100)
156
-
157
- (report "abstract datatypes - chapter 12"
158
- (load "stack.shen") loaded
159
- (top (push 0 (empty-stack _))) 0
160
- )
161
-
162
- (report "yacc"
163
- (load "yacc.shen") loaded
164
- (compile <sent> [the cat likes the dog]) [the cat likes the dog]
165
- (compile <sent> [the cat likes the canary] (/. E (fail))) (fail)
166
- (compile <asbscs> [a a a b b c]) [a a a b b c]
167
- (compile <find-digit> [a v f g 6 y u]) [6]
168
- (compile <vp> [chases the cat]) [chases the cat]
169
- (compile <des> [[d] [e e]]) [d e e]
170
- (compile <sent'> [the cat likes the dog]) [is it true that your father likes the dog ?]
171
- (compile <as> [a a a]) [a a a]
172
- (compile <find-digit'> [a v f g 6 y u]) [6 y u]
173
- (compile <asbs'cs> [a v f g 6 y u] (/. E (fail))) (fail)
174
- (compile <find-digit''> [a v f g 6 y u]) 6
175
- (compile <anbncn> [a a a b b b c c c]) [a a a b b b c c c] )
176
-
177
- (preclude-all-but [])
178
- (tc +)
179
-
180
- (report "N Queens"
181
- (preclude-all-but []) []
182
- (tc +) true
183
- (load "n_queens.shen") loaded
184
- (n-queens 5) [[4 2 5 3 1] [3 5 2 4 1] [5 3 1 4 2] [4 1 3 5 2] [5 2 4 1 3] [1 4 2 5 3]
185
- [2 5 3 1 4] [1 3 5 2 4] [3 1 4 2 5] [2 4 1 3 5]]
186
- (tc -) false)
187
-
188
- (report "search"
189
- (tc +) true
190
- (load "search.shen") loaded
191
- (tc -) false)
192
-
193
- (report "whist - chapter 11"
194
- (tc +) true
195
- (load "whist.shen") loaded
196
- (tc -) false)
197
-
198
- (report "Qi interpreter - chapter 13"
199
- (tc +) true
200
- (load "interpreter.shen") loaded
201
- (tc -) false)
202
-
203
- (report "proof assistant - chapter 15"
204
- (tc +) true
205
- (load "proof_assistant.shen") loaded
206
- (tc -) false)
207
-
208
- (report "quantifier machine"
209
- (tc +) true
210
- (load "qmachine.shen") loaded
211
- \* (filter [1 (+ 1) (= 100)] (/. X (integer? (sqrt X)))) [1 4 9 16 25 36 49 64 81] *\
212
- (exists [1 (+ 1) (= 100)] (> 50)) true
213
- (tc -) false)
214
-
215
- (report "depth first search"
216
- (tc +) true
217
- (load "depth_.shen") loaded
218
- (depth' 4 (/. X [(+ X 3) (+ X 4) (+ X 5)]) (/. X (= X 27)) (/. X (> X 27))) [4 7 10 13 16 19 22 27]
219
- (depth' 4 (/. X [(+ X 3)]) (/. X (= X 27)) (/. X (> X 27))) []
220
- (tc -) false)
221
-
222
- \* (report "red/black trees"
223
- (tc +) true
224
- (load "red-black.shen") loaded) *\
225
-
226
- (report "Lisp type checker"
227
-
228
- (load "TinyTypes.shen") loaded
229
- (tc +) true
230
- (load "TinyLispFunctions.txt") loaded
231
- (tc -) false )
232
-
1
+ (maxinferences 10000000000)
2
+
3
+ (report prolog-tests
4
+ (load "prolog.shen") loaded
5
+ (prolog? (f a)) true
6
+ (prolog? (g a)) false
7
+ (prolog? (g b)) true
8
+ (prolog? (mem 1 [X | 2]) (return X)) 1
9
+ (prolog? (rev [1 2] X) (return X)) [2 1]
10
+ (load "einstein.shen") loaded
11
+ (prolog? (einsteins_riddle X) (return X)) german
12
+ (prolog? (enjoys mark X) (return X)) chocolate
13
+ (prolog? (fads mark)) [tea chocolate]
14
+ (prolog? (prop [] [p <=> p])) true
15
+ (prolog? (mapit consit [1 2 3] Out) (return Out)) [[1 1] [1 2] [1 3]]
16
+ (prolog? (different a b)) true
17
+ (prolog? (different a a)) false
18
+ (prolog? (likes john Who) (return Who)) mary
19
+ (load "parse.prl") loaded
20
+ (prolog? (pparse ["the" + ["boy" + "jumps"]]
21
+ [[s = [np + vp]]
22
+ [np = [det + n]]
23
+ [det = "the"]
24
+ [n = "girl"]
25
+ [n = "boy"]
26
+ [vp = vintrans]
27
+ [vp = [vtrans + np]]
28
+ [vintrans = "jumps"]
29
+ [vtrans = "likes"]
30
+ [vtrans = "loves"]])) true)
31
+
32
+ \* (report "FPQi chapter 2"
33
+ (load "fruit_machine.shen") loaded
34
+ (do (print (fruit-machine start)) ok) ok) *\
35
+
36
+
37
+ (report "FPQi chapter 4"
38
+ (load "cartprod.shen") loaded
39
+ (cartesian-product [1 2 3] [1 2 3])
40
+ [[1 1] [1 2] [1 3] [2 1] [2 2] [2 3] [3 1] [3 2] [3 3]]
41
+ (load "powerset.shen") loaded
42
+ (powerset [1 2 3]) [[1 2 3] [1 2] [1 3] [1] [2 3] [2] [3] []])
43
+
44
+ (do (set *sprd* )
45
+ (nl 2))
46
+
47
+ (report "FPQi chapter 5"
48
+
49
+ (load "bubble_version_1.shen") loaded
50
+ (bubble-sort [1 2 3]) [3 2 1]
51
+ (load "bubble_version_2.shen") loaded
52
+ (bubble-sort [1 2 3]) [3 2 1]
53
+ \* (load "newton_version_1.shen") loaded
54
+ (newtons-method 4) 2
55
+ (load "newton_version_2.shen") loaded
56
+ (newtons-method 4) 2 *\
57
+ (load "spreadsheet.shen") loaded
58
+ (assess-spreadsheet [[jim [wages (/. Spreadsheet (get' frank wages Spreadsheet))]
59
+ [tax (/. Spreadsheet (* (get' frank tax Spreadsheet) .8))]]
60
+ [frank [wages 20000]
61
+ [tax (/. Spreadsheet (* .25 (get' frank wages Spreadsheet)))]]])
62
+
63
+ [[jim [wages 20000] [tax 4000.0]] [frank [wages 20000] [tax 5000.0]]] )
64
+
65
+ (report "FPQi chapter 3"
66
+
67
+ (load "prime.shen") loaded
68
+ (prime? 1000003) true
69
+ (load "mutual.shen") loaded
70
+ (even? 56) true
71
+ (odd? 77) true
72
+ (load "change.shen") loaded
73
+ (count-change 100) 4563
74
+ )
75
+
76
+ (report "FPQi chapter 6"
77
+ (load "semantic_net.shen") loaded
78
+ (clear Mark_Tarver) []
79
+ (clear man) []
80
+ (assert [Mark_Tarver is_a man]) [man]
81
+ (assert [man type_of human]) [human]
82
+ (query [is Mark_Tarver human]) yes)
83
+
84
+ (report "FPQi chapter 7"
85
+
86
+ (load "proplog_version_1.shen") loaded
87
+ (backchain q [[q <= p] [q <= r] [r <=]]) proved
88
+ (backchain q [[q <= p] [q <= r]]) (fail)
89
+ (load "proplog_version_2.shen") loaded
90
+ (backchain q [[q <= p] [q <= r] r]) true
91
+ (backchain q [[q <= p] [q <= r]]) false
92
+ )
93
+
94
+ (report "FPQi chapter 8"
95
+
96
+ (load "metaprog.shen") loaded
97
+ (generate_parser [sent --> np vp np --> name np --> det n
98
+ name --> "John" name --> "Bill"
99
+ name --> "Tom" det --> "the" det --> "a"
100
+ det --> "that" det --> "this"
101
+ n --> "girl" n --> "ball"
102
+ vp --> vtrans np vp --> vintrans
103
+ vtrans --> "kicks" vtrans --> "likes"
104
+ vintrans --> "jumps" vintrans --> "flies"]) [sent np name det n vp vtrans vintrans]
105
+
106
+ )
107
+
108
+ (report "chapter 11"
109
+ (load "binary.shen") loaded
110
+ (complement [1 0]) [0 1]
111
+ (load "streams.shen") loaded
112
+ (fst (delay (@p 0 (+ 1) (/. X false)))) 1)
113
+
114
+ (report "strings"
115
+ (load "strings.shen") loaded
116
+ (subst-string "a" "b" "cba") "caa"
117
+ (strlen "123") 3
118
+ (trim-string-left [" "] " hi ") "hi "
119
+ (trim-string-right [" "] " hi ") " hi"
120
+ (trim-string [" "] " hi ") "hi"
121
+ (reverse-string "abc") "cba"
122
+ (alldigits? "123") true)
123
+
124
+ (report "calculator.shen - chapter 11"
125
+ (load "calculator.shen") loaded
126
+ (do-calculation [[num 12] + [[num 7] * [num 4]]]) 40 )
127
+
128
+ (report "structures 1 - chapter 12"
129
+ (load "structures-untyped.shen") loaded
130
+ (defstruct ship [length name]) ship
131
+ (make-ship 200 "Mary Rose") [[structure | ship] [length | 200] [name | "Mary Rose"]]
132
+ (ship-length (make-ship 200 "Mary Rose")) 200
133
+ (ship-name (make-ship 200 "Mary Rose")) "Mary Rose" )
134
+
135
+ (report "structures 2 - chapter 12"
136
+ (load "structures-typed.shen") loaded
137
+ (defstruct ship [(@p length number) (@p name string)]) ship
138
+ (make-ship 200 "Mary Rose") [[structure | ship] [length | 200] [name | "Mary Rose"]]
139
+ (ship-length (make-ship 200 "Mary Rose")) 200
140
+ (ship-name (make-ship 200 "Mary Rose")) "Mary Rose")
141
+
142
+ (report "classes 1 - chapter 12"
143
+ (load "classes-untyped.shen") loaded
144
+ (defclass ship [length name]) ship
145
+ (set s (make-instance ship)) [[class | ship] [length | fail] [name | fail]]
146
+ (has-value? length (value s)) false
147
+ (set s (change-value (value s) length 100)) [[class | ship] [length | 100] [name | fail]]
148
+ (get-value length (value s)) 100)
149
+
150
+ (report "classes 2 - chapter 12"
151
+ (load "classes-typed.shen") loaded
152
+ (defclass ship [(@p length number) (@p name string)]) ship
153
+ (has-value? length (make-instance ship)) false
154
+ (change-value (make-instance ship) length 100) [[class | ship] [length | 100] [name | fail]]
155
+ (get-value length (change-value (make-instance ship) length 100)) 100)
156
+
157
+ (report "abstract datatypes - chapter 12"
158
+ (load "stack.shen") loaded
159
+ (top (push 0 (empty-stack _))) 0
160
+ )
161
+
162
+ (report "yacc"
163
+ (load "yacc.shen") loaded
164
+ (compile <sent> [the cat likes the dog]) [the cat likes the dog]
165
+ (compile <sent> [the cat likes the canary] (/. E (fail))) (fail)
166
+ (compile <asbscs> [a a a b b c]) [a a a b b c]
167
+ (compile <find-digit> [a v f g 6 y u]) [6]
168
+ (compile <vp> [chases the cat]) [chases the cat]
169
+ (compile <des> [[d] [e e]]) [d e e]
170
+ (compile <sent'> [the cat likes the dog]) [is it true that your father likes the dog ?]
171
+ (compile <as> [a a a]) [a a a]
172
+ (compile <find-digit'> [a v f g 6 y u]) [6 y u]
173
+ (compile <asbs'cs> [a v f g 6 y u] (/. E (fail))) (fail)
174
+ (compile <find-digit''> [a v f g 6 y u]) 6
175
+ (compile <anbncn> [a a a b b b c c c]) [a a a b b b c c c] )
176
+
177
+ (preclude-all-but [])
178
+ (tc +)
179
+
180
+ (report "N Queens"
181
+ (preclude-all-but []) []
182
+ (tc +) true
183
+ (load "n_queens.shen") loaded
184
+ (n-queens 5) [[4 2 5 3 1] [3 5 2 4 1] [5 3 1 4 2] [4 1 3 5 2] [5 2 4 1 3] [1 4 2 5 3]
185
+ [2 5 3 1 4] [1 3 5 2 4] [3 1 4 2 5] [2 4 1 3 5]]
186
+ (tc -) false)
187
+
188
+ (report "search"
189
+ (tc +) true
190
+ (load "search.shen") loaded
191
+ (tc -) false)
192
+
193
+ (report "whist - chapter 11"
194
+ (tc +) true
195
+ (load "whist.shen") loaded
196
+ (tc -) false)
197
+
198
+ (report "Qi interpreter - chapter 13"
199
+ (tc +) true
200
+ (load "interpreter.shen") loaded
201
+ (tc -) false)
202
+
203
+ (report "proof assistant - chapter 15"
204
+ (tc +) true
205
+ (load "proof_assistant.shen") loaded
206
+ (tc -) false)
207
+
208
+ (report "quantifier machine"
209
+ (tc +) true
210
+ (load "qmachine.shen") loaded
211
+ \* (filter [1 (+ 1) (= 100)] (/. X (integer? (sqrt X)))) [1 4 9 16 25 36 49 64 81] *\
212
+ (exists [1 (+ 1) (= 100)] (> 50)) true
213
+ (tc -) false)
214
+
215
+ (report "depth first search"
216
+ (tc +) true
217
+ (load "depth_.shen") loaded
218
+ (depth' 4 (/. X [(+ X 3) (+ X 4) (+ X 5)]) (/. X (= X 27)) (/. X (> X 27))) [4 7 10 13 16 19 22 27]
219
+ (depth' 4 (/. X [(+ X 3)]) (/. X (= X 27)) (/. X (> X 27))) []
220
+ (tc -) false)
221
+
222
+ \* (report "red/black trees"
223
+ (tc +) true
224
+ (load "red-black.shen") loaded) *\
225
+
226
+ (report "Lisp type checker"
227
+
228
+ (load "TinyTypes.shen") loaded
229
+ (tc +) true
230
+ (load "TinyLispFunctions.txt") loaded
231
+ (tc -) false )
232
+
233
233
  (reset)