shen-ruby 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +9 -3
- data/Gemfile +1 -4
- data/HISTORY.md +16 -0
- data/MIT_LICENSE.txt +1 -1
- data/README.md +25 -26
- data/Rakefile +3 -11
- data/bin/shen_test_suite.rb +15 -3
- data/bin/srrepl +6 -8
- data/lib/shen_ruby.rb +6 -1
- data/lib/shen_ruby/converters.rb +23 -0
- data/lib/shen_ruby/version.rb +1 -1
- data/shen-ruby.gemspec +4 -1
- data/shen/lib/shen_ruby/shen.rb +49 -33
- data/shen/release/benchmarks/N_queens.shen +45 -45
- data/shen/release/benchmarks/README.shen +14 -14
- data/shen/release/benchmarks/benchmarks.shen +52 -52
- data/shen/release/benchmarks/einstein.shen +32 -32
- data/shen/release/benchmarks/interpreter.shen +219 -219
- data/shen/release/benchmarks/jnk.shen +193 -193
- data/shen/release/benchmarks/powerset.shen +10 -10
- data/shen/release/benchmarks/prime.shen +10 -10
- data/shen/release/benchmarks/short.shen +129 -129
- data/shen/release/k_lambda/core.kl +181 -181
- data/shen/release/k_lambda/declarations.kl +131 -131
- data/shen/release/k_lambda/load.kl +84 -84
- data/shen/release/k_lambda/macros.kl +112 -112
- data/shen/release/k_lambda/prolog.kl +252 -252
- data/shen/release/k_lambda/reader.kl +222 -222
- data/shen/release/k_lambda/sequent.kl +166 -166
- data/shen/release/k_lambda/sys.kl +271 -271
- data/shen/release/k_lambda/t-star.kl +139 -139
- data/shen/release/k_lambda/toplevel.kl +135 -135
- data/shen/release/k_lambda/track.kl +103 -103
- data/shen/release/k_lambda/types.kl +324 -324
- data/shen/release/k_lambda/writer.kl +105 -105
- data/shen/release/k_lambda/yacc.kl +113 -113
- data/shen/release/test_programs/Chap13/problems.txt +26 -26
- data/shen/release/test_programs/README.shen +52 -52
- data/shen/release/test_programs/TinyLispFunctions.txt +15 -15
- data/shen/release/test_programs/TinyTypes.shen +55 -55
- data/shen/release/test_programs/binary.shen +24 -24
- data/shen/release/test_programs/bubble_version_1.shen +28 -28
- data/shen/release/test_programs/bubble_version_2.shen +22 -22
- data/shen/release/test_programs/calculator.shen +21 -21
- data/shen/release/test_programs/cartprod.shen +23 -23
- data/shen/release/test_programs/change.shen +25 -25
- data/shen/release/test_programs/classes-defaults.shen +94 -94
- data/shen/release/test_programs/classes-inheritance.shen +100 -100
- data/shen/release/test_programs/classes-typed.shen +74 -74
- data/shen/release/test_programs/classes-untyped.shen +46 -46
- data/shen/release/test_programs/depth_.shen +14 -14
- data/shen/release/test_programs/einstein.shen +34 -34
- data/shen/release/test_programs/fruit_machine.shen +46 -46
- data/shen/release/test_programs/interpreter.shen +217 -217
- data/shen/release/test_programs/metaprog.shen +85 -85
- data/shen/release/test_programs/minim.shen +192 -192
- data/shen/release/test_programs/mutual.shen +11 -11
- data/shen/release/test_programs/n_queens.shen +45 -45
- data/shen/release/test_programs/newton_version_1.shen +33 -33
- data/shen/release/test_programs/newton_version_2.shen +24 -24
- data/shen/release/test_programs/parse.prl +14 -14
- data/shen/release/test_programs/parser.shen +51 -51
- data/shen/release/test_programs/powerset.shen +10 -10
- data/shen/release/test_programs/prime.shen +10 -10
- data/shen/release/test_programs/prolog.shen +78 -78
- data/shen/release/test_programs/proof_assistant.shen +80 -80
- data/shen/release/test_programs/proplog_version_1.shen +25 -25
- data/shen/release/test_programs/proplog_version_2.shen +27 -27
- data/shen/release/test_programs/qmachine.shen +66 -66
- data/shen/release/test_programs/red-black.shen +54 -54
- data/shen/release/test_programs/search.shen +55 -55
- data/shen/release/test_programs/semantic_net.shen +44 -44
- data/shen/release/test_programs/spreadsheet.shen +34 -34
- data/shen/release/test_programs/stack.shen +27 -27
- data/shen/release/test_programs/streams.shen +20 -20
- data/shen/release/test_programs/strings.shen +57 -57
- data/shen/release/test_programs/structures-typed.shen +71 -71
- data/shen/release/test_programs/structures-untyped.shen +41 -41
- data/shen/release/test_programs/tests.shen +232 -232
- data/shen/release/test_programs/types.shen +11 -11
- data/shen/release/test_programs/whist.shen +239 -239
- data/shen/release/test_programs/yacc.shen +132 -132
- data/spec/shen_ruby/converters_spec.rb +48 -0
- data/spec/spec_helper.rb +1 -2
- metadata +55 -60
- data/k_lambda_spec/atom_spec.rb +0 -85
- data/k_lambda_spec/primitives/arithmetic_spec.rb +0 -175
- data/k_lambda_spec/primitives/assignments_spec.rb +0 -44
- data/k_lambda_spec/primitives/boolean_operations_spec.rb +0 -136
- data/k_lambda_spec/primitives/generic_functions_spec.rb +0 -120
- data/k_lambda_spec/primitives/lists_spec.rb +0 -40
- data/k_lambda_spec/primitives/strings_spec.rb +0 -77
- data/k_lambda_spec/primitives/symbols_spec.rb +0 -24
- data/k_lambda_spec/primitives/vectors_spec.rb +0 -92
- data/k_lambda_spec/spec_helper.rb +0 -29
- data/k_lambda_spec/support/shared_examples.rb +0 -124
- data/k_lambda_spec/tail_recursion_spec.rb +0 -30
- data/lib/kl.rb +0 -7
- data/lib/kl/absvector.rb +0 -12
- data/lib/kl/compiler.rb +0 -360
- data/lib/kl/cons.rb +0 -51
- data/lib/kl/empty_list.rb +0 -12
- data/lib/kl/environment.rb +0 -163
- data/lib/kl/error.rb +0 -4
- data/lib/kl/internal_error.rb +0 -7
- data/lib/kl/lexer.rb +0 -186
- data/lib/kl/primitives/arithmetic.rb +0 -60
- data/lib/kl/primitives/assignments.rb +0 -15
- data/lib/kl/primitives/booleans.rb +0 -21
- data/lib/kl/primitives/error_handling.rb +0 -13
- data/lib/kl/primitives/extensions.rb +0 -12
- data/lib/kl/primitives/generic_functions.rb +0 -29
- data/lib/kl/primitives/lists.rb +0 -23
- data/lib/kl/primitives/streams.rb +0 -28
- data/lib/kl/primitives/strings.rb +0 -63
- data/lib/kl/primitives/symbols.rb +0 -18
- data/lib/kl/primitives/time.rb +0 -17
- data/lib/kl/primitives/vectors.rb +0 -36
- data/lib/kl/reader.rb +0 -46
- data/spec/kl/cons_spec.rb +0 -12
- data/spec/kl/environment_spec.rb +0 -282
- data/spec/kl/interop_spec.rb +0 -68
- data/spec/kl/lexer_spec.rb +0 -149
- data/spec/kl/primitives/generic_functions_spec.rb +0 -29
- data/spec/kl/primitives/symbols_spec.rb +0 -21
- data/spec/kl/reader_spec.rb +0 -42
@@ -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)
|