porolog 1.0.0 → 1.0.1
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/README.md +101 -13
- data/coverage/index.html +63 -63
- data/doc/Array.html +1 -1
- data/doc/Object.html +1 -1
- data/doc/Porolog.html +3 -3
- data/doc/Symbol.html +1 -1
- data/doc/_index.html +1 -1
- data/doc/file.README.html +106 -15
- data/doc/index.html +106 -15
- data/doc/method_list.html +2 -2
- data/doc/top-level-namespace.html +1 -1
- data/lib/porolog.rb +2 -2
- data/lib/porolog/arguments.rb +2 -2
- data/lib/porolog/rule.rb +5 -5
- data/test/porolog/arguments_test.rb +8 -8
- data/test/porolog/goal_test.rb +2 -2
- data/test/porolog/predicate/builtin_test.rb +6 -6
- data/test/porolog/predicate_test.rb +2 -2
- data/test/samples_test.rb +1 -1
- metadata +2 -2
data/doc/Array.html
CHANGED
@@ -1056,7 +1056,7 @@
|
|
1056
1056
|
</div>
|
1057
1057
|
|
1058
1058
|
<div id="footer">
|
1059
|
-
Generated on
|
1059
|
+
Generated on Thu Aug 6 22:13:58 2020 by
|
1060
1060
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1061
1061
|
0.9.19 (ruby-2.6.5).
|
1062
1062
|
</div>
|
data/doc/Object.html
CHANGED
@@ -664,7 +664,7 @@
|
|
664
664
|
</div>
|
665
665
|
|
666
666
|
<div id="footer">
|
667
|
-
Generated on
|
667
|
+
Generated on Thu Aug 6 22:13:58 2020 by
|
668
668
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
669
669
|
0.9.19 (ruby-2.6.5).
|
670
670
|
</div>
|
data/doc/Porolog.html
CHANGED
@@ -133,7 +133,7 @@
|
|
133
133
|
|
134
134
|
</div>
|
135
135
|
</dt>
|
136
|
-
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1.0.
|
136
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>1.0.1</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
137
137
|
|
138
138
|
<dt id="VERSION_DATE-constant" class="">VERSION_DATE =
|
139
139
|
<div class="docstring">
|
@@ -149,7 +149,7 @@
|
|
149
149
|
|
150
150
|
</div>
|
151
151
|
</dt>
|
152
|
-
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2020-08-
|
152
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2020-08-06</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
153
153
|
|
154
154
|
<dt id="UNKNOWN_TAIL-constant" class="">UNKNOWN_TAIL =
|
155
155
|
<div class="docstring">
|
@@ -4406,7 +4406,7 @@
|
|
4406
4406
|
</div>
|
4407
4407
|
|
4408
4408
|
<div id="footer">
|
4409
|
-
Generated on
|
4409
|
+
Generated on Thu Aug 6 22:13:57 2020 by
|
4410
4410
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
4411
4411
|
0.9.19 (ruby-2.6.5).
|
4412
4412
|
</div>
|
data/doc/Symbol.html
CHANGED
@@ -491,7 +491,7 @@
|
|
491
491
|
</div>
|
492
492
|
|
493
493
|
<div id="footer">
|
494
|
-
Generated on
|
494
|
+
Generated on Thu Aug 6 22:13:58 2020 by
|
495
495
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
496
496
|
0.9.19 (ruby-2.6.5).
|
497
497
|
</div>
|
data/doc/_index.html
CHANGED
@@ -451,7 +451,7 @@
|
|
451
451
|
</div>
|
452
452
|
|
453
453
|
<div id="footer">
|
454
|
-
Generated on
|
454
|
+
Generated on Thu Aug 6 22:13:56 2020 by
|
455
455
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
456
456
|
0.9.19 (ruby-2.6.5).
|
457
457
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -96,11 +96,11 @@
|
|
96
96
|
|
97
97
|
<p>It is entirely possible to create a Ruby program that is effectively just a Prolog program. The main purpose of Porolog though is to add declarative logic programming to Ruby and allow hybrid programming, in the same way that Ruby allows hybrid programming in the functional programming paradigm.</p>
|
98
98
|
|
99
|
-
<p>This then Ruby programs to be written spanning all the major programming paradigms: - Imperative - Functional - Object Oriented - Declarative Logic</p>
|
99
|
+
<p>This then enables Ruby programs to be written spanning all the major programming paradigms: - Imperative - Functional - Object Oriented - Declarative Logic</p>
|
100
100
|
|
101
101
|
<h3 id="label-Basic+Usage">Basic Usage</h3>
|
102
102
|
|
103
|
-
<p>Using <code>porolog</code> involves creating logic from facts and rules. An example
|
103
|
+
<p>Using <code>porolog</code> involves creating logic from facts and rules. An example of the most basic usage, using just facts.</p>
|
104
104
|
|
105
105
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
106
106
|
|
@@ -129,7 +129,7 @@
|
|
129
129
|
<span class='kw'>class</span> <span class='const'>Numbers</span>
|
130
130
|
|
131
131
|
<span class='const'>Predicate</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span> <span class='kw'>self</span>
|
132
|
-
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span>
|
132
|
+
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
133
133
|
|
134
134
|
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
135
135
|
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
@@ -160,7 +160,7 @@
|
|
160
160
|
|
161
161
|
<p>A Predicate represents a Prolog predicate. They form the basis for rules and queries.</p>
|
162
162
|
|
163
|
-
<p>The Scope class enables you to have multiple logic programs embedded in the same Ruby program. A Scope object defines a scope for the predicates of a logic programme.</p>
|
163
|
+
<p>The Scope class enables you to have multiple logic programs embedded in the same Ruby program. A Scope object defines a scope for the predicates of a logic programme. This allows you to have different predicates with the same name.</p>
|
164
164
|
|
165
165
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
166
166
|
|
@@ -182,14 +182,9 @@
|
|
182
182
|
<span class='id identifier rubyid_prime'>prime</span><span class='period'>.</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump D</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
183
183
|
|
184
184
|
<span class='comment'># -- Assertions --
|
185
|
-
</span><span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
186
|
-
|
187
|
-
<span class='id identifier
|
188
|
-
<span class='id identifier rubyid_assert_scope'>assert_scope</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span></span><span class='lbracket'>[</span><span class='symbol'>:numbers</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:first</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_prime1'>prime1</span><span class='rbracket'>]</span>
|
189
|
-
<span class='id identifier rubyid_assert_scope'>assert_scope</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span></span><span class='lbracket'>[</span><span class='symbol'>:pumps</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:second</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_prime2'>prime2</span><span class='rbracket'>]</span>
|
190
|
-
|
191
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
192
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
185
|
+
</span><span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='lbracket'>[</span><span class='symbol'>:default</span><span class='comma'>,</span><span class='symbol'>:numbers</span><span class='comma'>,</span><span class='symbol'>:pumps</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>Scope</span><span class='period'>.</span><span class='id identifier rubyid_scopes'>scopes</span>
|
186
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
187
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
193
188
|
|
194
189
|
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
195
190
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
@@ -198,7 +193,7 @@
|
|
198
193
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>7</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
199
194
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>11</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
200
195
|
<span class='rbracket'>]</span>
|
201
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
196
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='id identifier rubyid_solutions'>solutions</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
202
197
|
|
203
198
|
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
204
199
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump A</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
@@ -206,9 +201,105 @@
|
|
206
201
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump C</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
207
202
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump D</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
208
203
|
<span class='rbracket'>]</span>
|
209
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
204
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='id identifier rubyid_solutions'>solutions</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
210
205
|
</code></pre>
|
211
206
|
|
207
|
+
<h3 id="label-A+Complete+Example">A Complete Example</h3>
|
208
|
+
|
209
|
+
<p>This example shows:</p>
|
210
|
+
<ul><li>
|
211
|
+
<p>how to define facts,</p>
|
212
|
+
</li><li>
|
213
|
+
<p>how to define rules,</p>
|
214
|
+
</li><li>
|
215
|
+
<p>how to encapsulate predicates within a class,</p>
|
216
|
+
</li><li>
|
217
|
+
<p>how to specify a cut,</p>
|
218
|
+
</li><li>
|
219
|
+
<p>how to use builtin predicates, and</p>
|
220
|
+
</li><li>
|
221
|
+
<p>how to initiate queries.</p>
|
222
|
+
</li></ul>
|
223
|
+
|
224
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
225
|
+
|
226
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span>
|
227
|
+
|
228
|
+
<span class='kw'>class</span> <span class='const'>Numbers</span>
|
229
|
+
|
230
|
+
<span class='const'>Predicate</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span> <span class='kw'>self</span>
|
231
|
+
<span class='id identifier rubyid_builtin'>builtin</span> <span class='symbol'>:gtr</span><span class='comma'>,</span> <span class='symbol'>:is</span><span class='comma'>,</span> <span class='symbol'>:noteq</span><span class='comma'>,</span> <span class='symbol'>:between</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
232
|
+
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='symbol'>:search_prime</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
233
|
+
|
234
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
235
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
236
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
237
|
+
<span class='id identifier rubyid_between'>between</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='int'>4</span><span class='comma'>,</span> <span class='int'>100</span><span class='rparen'>)</span><span class='comma'>,</span>
|
238
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:X_mod_2</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_x'>x</span><span class='op'>|</span> <span class='id identifier rubyid_x'>x</span> <span class='op'>%</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
239
|
+
<span class='id identifier rubyid_noteq'>noteq</span><span class='lparen'>(</span><span class='symbol'>:X_mod_2</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span><span class='comma'>,</span>
|
240
|
+
<span class='symbol'>:CUT</span><span class='comma'>,</span>
|
241
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='int'>3</span><span class='rparen'>)</span><span class='comma'>,</span>
|
242
|
+
<span class='rbracket'>]</span>
|
243
|
+
|
244
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
245
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:N_squared</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>**</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
246
|
+
<span class='id identifier rubyid_gtr'>gtr</span><span class='lparen'>(</span><span class='symbol'>:N_squared</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='rparen'>)</span><span class='comma'>,</span>
|
247
|
+
<span class='symbol'>:CUT</span>
|
248
|
+
<span class='rbracket'>]</span>
|
249
|
+
|
250
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
251
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:X_mod_N</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_x'>x</span><span class='comma'>,</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_x'>x</span> <span class='op'>%</span> <span class='id identifier rubyid_n'>n</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
252
|
+
<span class='id identifier rubyid_noteq'>noteq</span><span class='lparen'>(</span><span class='symbol'>:X_mod_N</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span><span class='comma'>,</span>
|
253
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:M</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>+</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
254
|
+
<span class='symbol'>:CUT</span><span class='comma'>,</span>
|
255
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:M</span><span class='rparen'>)</span><span class='comma'>,</span>
|
256
|
+
<span class='rbracket'>]</span>
|
257
|
+
|
258
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_show_primes'>show_primes</span>
|
259
|
+
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
260
|
+
|
261
|
+
<span class='id identifier rubyid_solutions'>solutions</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_solution'>solution</span><span class='op'>|</span>
|
262
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_solution'>solution</span><span class='lbracket'>[</span><span class='symbol'>:X</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> is prime</span><span class='tstring_end'>"</span></span>
|
263
|
+
<span class='kw'>end</span>
|
264
|
+
<span class='kw'>end</span>
|
265
|
+
|
266
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_primes'>primes</span>
|
267
|
+
<span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve_for'>solve_for</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span>
|
268
|
+
<span class='kw'>end</span>
|
269
|
+
|
270
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span>
|
271
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>prime</span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>not prime</span><span class='tstring_end'>'</span></span>
|
272
|
+
<span class='kw'>end</span>
|
273
|
+
|
274
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span>
|
275
|
+
<span class='ivar'>@number</span> <span class='op'>=</span> <span class='id identifier rubyid_number'>number</span>
|
276
|
+
<span class='kw'>end</span>
|
277
|
+
|
278
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_kind'>kind</span>
|
279
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='ivar'>@number</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>?</span> <span class='symbol'>:prime</span> <span class='op'>:</span> <span class='symbol'>:not_prime</span>
|
280
|
+
<span class='kw'>end</span>
|
281
|
+
|
282
|
+
<span class='kw'>end</span>
|
283
|
+
|
284
|
+
|
285
|
+
<span class='id identifier rubyid_numbers'>numbers</span> <span class='op'>=</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='int'>23</span>
|
286
|
+
<span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_show_primes'>show_primes</span>
|
287
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_primes'>primes</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
288
|
+
|
289
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
290
|
+
|
291
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
292
|
+
<span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_i</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_arg'>arg</span><span class='op'>|</span>
|
293
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_arg'>arg</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> is </span><span class='embexpr_beg'>#{</span><span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='lparen'>(</span><span class='id identifier rubyid_arg'>arg</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
294
|
+
<span class='id identifier rubyid_number'>number</span> <span class='op'>=</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_arg'>arg</span>
|
295
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_number'>number</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
296
|
+
<span class='kw'>end</span>
|
297
|
+
</code></pre>
|
298
|
+
|
299
|
+
<h3 id="label-Porolog+Wiki">Porolog Wiki</h3>
|
300
|
+
|
301
|
+
<p>See the Wiki for further details. <a href="https://github.com/wizardofosmium/porolog/wiki">github.com/wizardofosmium/porolog/wiki</a></p>
|
302
|
+
|
212
303
|
<h2 id="label-Testing">Testing</h2>
|
213
304
|
|
214
305
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_test'>test</span>
|
@@ -235,7 +326,7 @@
|
|
235
326
|
</div></div>
|
236
327
|
|
237
328
|
<div id="footer">
|
238
|
-
Generated on
|
329
|
+
Generated on Thu Aug 6 22:13:57 2020 by
|
239
330
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
240
331
|
0.9.19 (ruby-2.6.5).
|
241
332
|
</div>
|
data/doc/index.html
CHANGED
@@ -96,11 +96,11 @@
|
|
96
96
|
|
97
97
|
<p>It is entirely possible to create a Ruby program that is effectively just a Prolog program. The main purpose of Porolog though is to add declarative logic programming to Ruby and allow hybrid programming, in the same way that Ruby allows hybrid programming in the functional programming paradigm.</p>
|
98
98
|
|
99
|
-
<p>This then Ruby programs to be written spanning all the major programming paradigms: - Imperative - Functional - Object Oriented - Declarative Logic</p>
|
99
|
+
<p>This then enables Ruby programs to be written spanning all the major programming paradigms: - Imperative - Functional - Object Oriented - Declarative Logic</p>
|
100
100
|
|
101
101
|
<h3 id="label-Basic+Usage">Basic Usage</h3>
|
102
102
|
|
103
|
-
<p>Using <code>porolog</code> involves creating logic from facts and rules. An example
|
103
|
+
<p>Using <code>porolog</code> involves creating logic from facts and rules. An example of the most basic usage, using just facts.</p>
|
104
104
|
|
105
105
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
106
106
|
|
@@ -129,7 +129,7 @@
|
|
129
129
|
<span class='kw'>class</span> <span class='const'>Numbers</span>
|
130
130
|
|
131
131
|
<span class='const'>Predicate</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span> <span class='kw'>self</span>
|
132
|
-
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span>
|
132
|
+
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
133
133
|
|
134
134
|
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
135
135
|
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
@@ -160,7 +160,7 @@
|
|
160
160
|
|
161
161
|
<p>A Predicate represents a Prolog predicate. They form the basis for rules and queries.</p>
|
162
162
|
|
163
|
-
<p>The Scope class enables you to have multiple logic programs embedded in the same Ruby program. A Scope object defines a scope for the predicates of a logic programme.</p>
|
163
|
+
<p>The Scope class enables you to have multiple logic programs embedded in the same Ruby program. A Scope object defines a scope for the predicates of a logic programme. This allows you to have different predicates with the same name.</p>
|
164
164
|
|
165
165
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
166
166
|
|
@@ -182,14 +182,9 @@
|
|
182
182
|
<span class='id identifier rubyid_prime'>prime</span><span class='period'>.</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump D</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
183
183
|
|
184
184
|
<span class='comment'># -- Assertions --
|
185
|
-
</span><span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
186
|
-
|
187
|
-
<span class='id identifier
|
188
|
-
<span class='id identifier rubyid_assert_scope'>assert_scope</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span></span><span class='lbracket'>[</span><span class='symbol'>:numbers</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:first</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_prime1'>prime1</span><span class='rbracket'>]</span>
|
189
|
-
<span class='id identifier rubyid_assert_scope'>assert_scope</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span></span><span class='lbracket'>[</span><span class='symbol'>:pumps</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:second</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_prime2'>prime2</span><span class='rbracket'>]</span>
|
190
|
-
|
191
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
192
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
185
|
+
</span><span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='lbracket'>[</span><span class='symbol'>:default</span><span class='comma'>,</span><span class='symbol'>:numbers</span><span class='comma'>,</span><span class='symbol'>:pumps</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>Scope</span><span class='period'>.</span><span class='id identifier rubyid_scopes'>scopes</span>
|
186
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
187
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
193
188
|
|
194
189
|
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
195
190
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
@@ -198,7 +193,7 @@
|
|
198
193
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>7</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
199
194
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='int'>11</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
200
195
|
<span class='rbracket'>]</span>
|
201
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
196
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='id identifier rubyid_solutions'>solutions</span><span class='comma'>,</span> <span class='id identifier rubyid_prime1'>prime1</span><span class='period'>.</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
202
197
|
|
203
198
|
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
204
199
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump A</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
@@ -206,9 +201,105 @@
|
|
206
201
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump C</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
207
202
|
<span class='lbrace'>{</span> <span class='label'>X:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pump D</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
208
203
|
<span class='rbracket'>]</span>
|
209
|
-
<span class='id identifier rubyid_assert_equal'>assert_equal</span>
|
204
|
+
<span class='id identifier rubyid_assert_equal'>assert_equal</span> <span class='id identifier rubyid_solutions'>solutions</span><span class='comma'>,</span> <span class='id identifier rubyid_prime2'>prime2</span><span class='period'>.</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
210
205
|
</code></pre>
|
211
206
|
|
207
|
+
<h3 id="label-A+Complete+Example">A Complete Example</h3>
|
208
|
+
|
209
|
+
<p>This example shows:</p>
|
210
|
+
<ul><li>
|
211
|
+
<p>how to define facts,</p>
|
212
|
+
</li><li>
|
213
|
+
<p>how to define rules,</p>
|
214
|
+
</li><li>
|
215
|
+
<p>how to encapsulate predicates within a class,</p>
|
216
|
+
</li><li>
|
217
|
+
<p>how to specify a cut,</p>
|
218
|
+
</li><li>
|
219
|
+
<p>how to use builtin predicates, and</p>
|
220
|
+
</li><li>
|
221
|
+
<p>how to initiate queries.</p>
|
222
|
+
</li></ul>
|
223
|
+
|
224
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
225
|
+
|
226
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span>
|
227
|
+
|
228
|
+
<span class='kw'>class</span> <span class='const'>Numbers</span>
|
229
|
+
|
230
|
+
<span class='const'>Predicate</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span> <span class='kw'>self</span>
|
231
|
+
<span class='id identifier rubyid_builtin'>builtin</span> <span class='symbol'>:gtr</span><span class='comma'>,</span> <span class='symbol'>:is</span><span class='comma'>,</span> <span class='symbol'>:noteq</span><span class='comma'>,</span> <span class='symbol'>:between</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
232
|
+
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span><span class='comma'>,</span> <span class='symbol'>:search_prime</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='kw'>self</span>
|
233
|
+
|
234
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
235
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
236
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
237
|
+
<span class='id identifier rubyid_between'>between</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='int'>4</span><span class='comma'>,</span> <span class='int'>100</span><span class='rparen'>)</span><span class='comma'>,</span>
|
238
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:X_mod_2</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_x'>x</span><span class='op'>|</span> <span class='id identifier rubyid_x'>x</span> <span class='op'>%</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
239
|
+
<span class='id identifier rubyid_noteq'>noteq</span><span class='lparen'>(</span><span class='symbol'>:X_mod_2</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span><span class='comma'>,</span>
|
240
|
+
<span class='symbol'>:CUT</span><span class='comma'>,</span>
|
241
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='int'>3</span><span class='rparen'>)</span><span class='comma'>,</span>
|
242
|
+
<span class='rbracket'>]</span>
|
243
|
+
|
244
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
245
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:N_squared</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>**</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
246
|
+
<span class='id identifier rubyid_gtr'>gtr</span><span class='lparen'>(</span><span class='symbol'>:N_squared</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='rparen'>)</span><span class='comma'>,</span>
|
247
|
+
<span class='symbol'>:CUT</span>
|
248
|
+
<span class='rbracket'>]</span>
|
249
|
+
|
250
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='lbracket'>[</span>
|
251
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:X_mod_N</span><span class='comma'>,</span> <span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_x'>x</span><span class='comma'>,</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_x'>x</span> <span class='op'>%</span> <span class='id identifier rubyid_n'>n</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
252
|
+
<span class='id identifier rubyid_noteq'>noteq</span><span class='lparen'>(</span><span class='symbol'>:X_mod_N</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span><span class='comma'>,</span>
|
253
|
+
<span class='id identifier rubyid_is'>is</span><span class='lparen'>(</span><span class='symbol'>:M</span><span class='comma'>,</span> <span class='symbol'>:N</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>+</span> <span class='int'>2</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
254
|
+
<span class='symbol'>:CUT</span><span class='comma'>,</span>
|
255
|
+
<span class='id identifier rubyid_search_prime'>search_prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='comma'>,</span> <span class='symbol'>:M</span><span class='rparen'>)</span><span class='comma'>,</span>
|
256
|
+
<span class='rbracket'>]</span>
|
257
|
+
|
258
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_show_primes'>show_primes</span>
|
259
|
+
<span class='id identifier rubyid_solutions'>solutions</span> <span class='op'>=</span> <span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve'>solve</span>
|
260
|
+
|
261
|
+
<span class='id identifier rubyid_solutions'>solutions</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_solution'>solution</span><span class='op'>|</span>
|
262
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_solution'>solution</span><span class='lbracket'>[</span><span class='symbol'>:X</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> is prime</span><span class='tstring_end'>"</span></span>
|
263
|
+
<span class='kw'>end</span>
|
264
|
+
<span class='kw'>end</span>
|
265
|
+
|
266
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_primes'>primes</span>
|
267
|
+
<span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_solve_for'>solve_for</span><span class='lparen'>(</span><span class='symbol'>:X</span><span class='rparen'>)</span>
|
268
|
+
<span class='kw'>end</span>
|
269
|
+
|
270
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span>
|
271
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>prime</span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>not prime</span><span class='tstring_end'>'</span></span>
|
272
|
+
<span class='kw'>end</span>
|
273
|
+
|
274
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_number'>number</span><span class='rparen'>)</span>
|
275
|
+
<span class='ivar'>@number</span> <span class='op'>=</span> <span class='id identifier rubyid_number'>number</span>
|
276
|
+
<span class='kw'>end</span>
|
277
|
+
|
278
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_kind'>kind</span>
|
279
|
+
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='ivar'>@number</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>?</span> <span class='symbol'>:prime</span> <span class='op'>:</span> <span class='symbol'>:not_prime</span>
|
280
|
+
<span class='kw'>end</span>
|
281
|
+
|
282
|
+
<span class='kw'>end</span>
|
283
|
+
|
284
|
+
|
285
|
+
<span class='id identifier rubyid_numbers'>numbers</span> <span class='op'>=</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='int'>23</span>
|
286
|
+
<span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_show_primes'>show_primes</span>
|
287
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_primes'>primes</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
288
|
+
|
289
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
290
|
+
|
291
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
292
|
+
<span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_i</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_arg'>arg</span><span class='op'>|</span>
|
293
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_arg'>arg</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> is </span><span class='embexpr_beg'>#{</span><span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='lparen'>(</span><span class='id identifier rubyid_arg'>arg</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
294
|
+
<span class='id identifier rubyid_number'>number</span> <span class='op'>=</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_arg'>arg</span>
|
295
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_number'>number</span><span class='period'>.</span><span class='id identifier rubyid_kind'>kind</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
296
|
+
<span class='kw'>end</span>
|
297
|
+
</code></pre>
|
298
|
+
|
299
|
+
<h3 id="label-Porolog+Wiki">Porolog Wiki</h3>
|
300
|
+
|
301
|
+
<p>See the Wiki for further details. <a href="https://github.com/wizardofosmium/porolog/wiki">github.com/wizardofosmium/porolog/wiki</a></p>
|
302
|
+
|
212
303
|
<h2 id="label-Testing">Testing</h2>
|
213
304
|
|
214
305
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_test'>test</span>
|
@@ -235,7 +326,7 @@
|
|
235
326
|
</div></div>
|
236
327
|
|
237
328
|
<div id="footer">
|
238
|
-
Generated on
|
329
|
+
Generated on Thu Aug 6 22:13:57 2020 by
|
239
330
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
240
331
|
0.9.19 (ruby-2.6.5).
|
241
332
|
</div>
|
data/doc/method_list.html
CHANGED
@@ -326,7 +326,7 @@
|
|
326
326
|
|
327
327
|
<li class="even ">
|
328
328
|
<div class="item">
|
329
|
-
<span class='object_link'><a href="Porolog/Arguments.html#
|
329
|
+
<span class='object_link'><a href="Porolog/Arguments.html#cut_fallacy!-instance_method" title="Porolog::Arguments#cut_fallacy! (method)">#cut_fallacy!</a></span>
|
330
330
|
<small>Porolog::Arguments</small>
|
331
331
|
</div>
|
332
332
|
</li>
|
@@ -414,7 +414,7 @@
|
|
414
414
|
|
415
415
|
<li class="odd ">
|
416
416
|
<div class="item">
|
417
|
-
<span class='object_link'><a href="Porolog/Arguments.html#
|
417
|
+
<span class='object_link'><a href="Porolog/Arguments.html#fallacy!-instance_method" title="Porolog::Arguments#fallacy! (method)">#fallacy!</a></span>
|
418
418
|
<small>Porolog::Arguments</small>
|
419
419
|
</div>
|
420
420
|
</li>
|
@@ -102,7 +102,7 @@
|
|
102
102
|
</div>
|
103
103
|
|
104
104
|
<div id="footer">
|
105
|
-
Generated on
|
105
|
+
Generated on Thu Aug 6 22:13:57 2020 by
|
106
106
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
107
|
0.9.19 (ruby-2.6.5).
|
108
108
|
</div>
|
data/lib/porolog.rb
CHANGED
@@ -11,9 +11,9 @@
|
|
11
11
|
module Porolog
|
12
12
|
|
13
13
|
# The most recent version of the Porolog gem.
|
14
|
-
VERSION = '1.0.
|
14
|
+
VERSION = '1.0.1'.freeze
|
15
15
|
# The most recent date of when the VERSION changed.
|
16
|
-
VERSION_DATE = '2020-08-
|
16
|
+
VERSION_DATE = '2020-08-06'.freeze
|
17
17
|
|
18
18
|
# Represents an unknown tail of a list.
|
19
19
|
UNKNOWN_TAIL = Object.new
|