mini_kraken 0.1.07 → 0.1.12

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/README.md +11 -3
  4. data/lib/mini_kraken/core/association_walker.rb +1 -1
  5. data/lib/mini_kraken/core/base_arg.rb +10 -0
  6. data/lib/mini_kraken/core/conde.rb +143 -0
  7. data/lib/mini_kraken/core/conj2.rb +59 -53
  8. data/lib/mini_kraken/core/def_relation.rb +49 -0
  9. data/lib/mini_kraken/core/disj2.rb +53 -48
  10. data/lib/mini_kraken/core/duck_fiber.rb +1 -1
  11. data/lib/mini_kraken/core/equals.rb +134 -126
  12. data/lib/mini_kraken/core/fail.rb +18 -14
  13. data/lib/mini_kraken/core/formal_arg.rb +22 -0
  14. data/lib/mini_kraken/core/formal_ref.rb +24 -0
  15. data/lib/mini_kraken/core/goal.rb +9 -3
  16. data/lib/mini_kraken/core/goal_arg.rb +5 -3
  17. data/lib/mini_kraken/core/goal_template.rb +60 -0
  18. data/lib/mini_kraken/core/k_boolean.rb +31 -0
  19. data/lib/mini_kraken/core/outcome.rb +14 -0
  20. data/lib/mini_kraken/core/relation.rb +7 -0
  21. data/lib/mini_kraken/core/succeed.rb +17 -13
  22. data/lib/mini_kraken/core/vocabulary.rb +22 -4
  23. data/lib/mini_kraken/glue/fresh_env.rb +45 -3
  24. data/lib/mini_kraken/glue/run_star_expression.rb +43 -26
  25. data/lib/mini_kraken/version.rb +1 -1
  26. data/spec/core/conde_spec.rb +147 -0
  27. data/spec/core/conj2_spec.rb +8 -9
  28. data/spec/core/def_relation_spec.rb +96 -0
  29. data/spec/core/disj2_spec.rb +0 -45
  30. data/spec/core/duck_fiber_spec.rb +12 -1
  31. data/spec/core/equals_spec.rb +3 -3
  32. data/spec/core/goal_template_spec.rb +74 -0
  33. data/spec/core/k_boolean_spec.rb +107 -0
  34. data/spec/core/outcome_spec.rb +48 -0
  35. data/spec/core/vocabulary_spec.rb +6 -0
  36. data/spec/glue/fresh_env_spec.rb +27 -1
  37. data/spec/glue/run_star_expression_spec.rb +535 -18
  38. data/spec/mini_kraken_spec.rb +2 -0
  39. data/spec/spec_helper.rb +0 -1
  40. data/spec/support/factory_methods.rb +15 -0
  41. metadata +19 -2
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../lib/mini_kraken/version/'
4
+
3
5
  RSpec.describe MiniKraken do
4
6
  it 'has a version number' do
5
7
  expect(MiniKraken::VERSION).not_to be nil
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/setup'
4
3
  require 'rspec' # Use the RSpec framework
5
4
 
6
5
  RSpec.configure do |config|
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative '../../lib/mini_kraken/core/any_value'
4
4
  require_relative '../../lib/mini_kraken/core/cons_cell'
5
+ require_relative '../../lib/mini_kraken/core/k_boolean'
5
6
  require_relative '../../lib/mini_kraken/core/k_symbol'
6
7
  require_relative '../../lib/mini_kraken/core/variable'
7
8
  require_relative '../../lib/mini_kraken/core/variable_ref'
@@ -26,6 +27,13 @@ module MiniKraken
26
27
  Core::ConsCell.new(obj1, obj2)
27
28
  end
28
29
 
30
+ # Factory method for constructing a goal using the Equals relation.
31
+ # @param args [Array<Core::Goal>]
32
+ # @return [Core::Goal]
33
+ def conde_goal(args)
34
+ Core::Goal.new(Core::Conde.instance, args)
35
+ end
36
+
29
37
  # Factory method for constructing a goal using the Equals relation.
30
38
  # @param arg1 [Term]
31
39
  # @param arg2 [Term]
@@ -50,6 +58,13 @@ module MiniKraken
50
58
  Core::Goal.new(Core::Disj2.instance, [g1, g2])
51
59
  end
52
60
 
61
+ # Factory method for constructing a KBoolean instance
62
+ # @param aValue [Boolean]
63
+ # @return [Core::KBoolean]
64
+ def k_boolean(aValue)
65
+ Core::KBoolean.new(aValue)
66
+ end
67
+
53
68
  # Factory method for constructing a KSymbol instance
54
69
  # @param aSymbol [Symbol]
55
70
  # @return [Core::KSymbol]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_kraken
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.07
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-23 00:00:00.000000000 Z
11
+ date: 2020-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,21 +72,28 @@ files:
72
72
  - lib/mini_kraken/core/association.rb
73
73
  - lib/mini_kraken/core/association_walker.rb
74
74
  - lib/mini_kraken/core/atomic_term.rb
75
+ - lib/mini_kraken/core/base_arg.rb
75
76
  - lib/mini_kraken/core/binary_relation.rb
76
77
  - lib/mini_kraken/core/composite_goal.rb
77
78
  - lib/mini_kraken/core/composite_term.rb
79
+ - lib/mini_kraken/core/conde.rb
78
80
  - lib/mini_kraken/core/conj2.rb
79
81
  - lib/mini_kraken/core/cons_cell.rb
82
+ - lib/mini_kraken/core/def_relation.rb
80
83
  - lib/mini_kraken/core/designation.rb
81
84
  - lib/mini_kraken/core/disj2.rb
82
85
  - lib/mini_kraken/core/duck_fiber.rb
83
86
  - lib/mini_kraken/core/environment.rb
84
87
  - lib/mini_kraken/core/equals.rb
85
88
  - lib/mini_kraken/core/fail.rb
89
+ - lib/mini_kraken/core/formal_arg.rb
90
+ - lib/mini_kraken/core/formal_ref.rb
86
91
  - lib/mini_kraken/core/freshness.rb
87
92
  - lib/mini_kraken/core/goal.rb
88
93
  - lib/mini_kraken/core/goal_arg.rb
89
94
  - lib/mini_kraken/core/goal_relation.rb
95
+ - lib/mini_kraken/core/goal_template.rb
96
+ - lib/mini_kraken/core/k_boolean.rb
90
97
  - lib/mini_kraken/core/k_integer.rb
91
98
  - lib/mini_kraken/core/k_symbol.rb
92
99
  - lib/mini_kraken/core/nullary_relation.rb
@@ -103,15 +110,20 @@ files:
103
110
  - mini_kraken.gemspec
104
111
  - spec/core/association_spec.rb
105
112
  - spec/core/association_walker_spec.rb
113
+ - spec/core/conde_spec.rb
106
114
  - spec/core/conj2_spec.rb
107
115
  - spec/core/cons_cell_spec.rb
116
+ - spec/core/def_relation_spec.rb
108
117
  - spec/core/disj2_spec.rb
109
118
  - spec/core/duck_fiber_spec.rb
110
119
  - spec/core/environment_spec.rb
111
120
  - spec/core/equals_spec.rb
112
121
  - spec/core/fail_spec.rb
113
122
  - spec/core/goal_spec.rb
123
+ - spec/core/goal_template_spec.rb
124
+ - spec/core/k_boolean_spec.rb
114
125
  - spec/core/k_symbol_spec.rb
126
+ - spec/core/outcome_spec.rb
115
127
  - spec/core/succeed_spec.rb
116
128
  - spec/core/variable_ref_spec.rb
117
129
  - spec/core/variable_spec.rb
@@ -148,15 +160,20 @@ summary: Implementation of Minikanren language in Ruby. WIP
148
160
  test_files:
149
161
  - spec/core/association_spec.rb
150
162
  - spec/core/association_walker_spec.rb
163
+ - spec/core/conde_spec.rb
151
164
  - spec/core/conj2_spec.rb
152
165
  - spec/core/cons_cell_spec.rb
166
+ - spec/core/def_relation_spec.rb
153
167
  - spec/core/disj2_spec.rb
154
168
  - spec/core/duck_fiber_spec.rb
155
169
  - spec/core/environment_spec.rb
156
170
  - spec/core/equals_spec.rb
157
171
  - spec/core/fail_spec.rb
158
172
  - spec/core/goal_spec.rb
173
+ - spec/core/goal_template_spec.rb
174
+ - spec/core/k_boolean_spec.rb
159
175
  - spec/core/k_symbol_spec.rb
176
+ - spec/core/outcome_spec.rb
160
177
  - spec/core/succeed_spec.rb
161
178
  - spec/core/variable_ref_spec.rb
162
179
  - spec/core/variable_spec.rb