Skip to content

Commit 69549a3

Browse files
committed
Update rationale page
1 parent 1d42fc4 commit 69549a3

File tree

6 files changed

+20
-18
lines changed

6 files changed

+20
-18
lines changed

_pages/download.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Prolog compiler is accomplished using a small
2121
includes adapter files for all supported Prolog compilers:
2222

2323
- [B-Prolog 8.1 or later versions](http://www.picat-lang.org/bprolog/)
24-
- [Ciao Prolog (version 1.21.0 or later)](http://ciao-lang.org) *(experimental)*
24+
- [Ciao Prolog (version 1.22.0 or later)](http://ciao-lang.org) *(experimental)*
2525
- [CxProlog 0.98.1 or later versions](http://ctp.di.fct.unl.pt/~amd/cxprolog/)
2626
- [ECLiPSe 6.1\#143 or later versions](http://eclipseclp.org/)
2727
- [GNU Prolog 1.4.5 or later versions](http://www.gprolog.org/)

_pages/rationale.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ Logtalk is designed to _extend_ and _leverage_ Prolog. It provides an alternativ
1616
* Default importing of module exported predicates when loading a module file
1717
* Strongly biased towards implicit predicate qualification
1818

19-
These fundamental characteristics make module systems relatively simple to implement but also effectively prevent extending them to provide several key features present in Logtalk, some of them described here, that support a wide range of code encapsulation and reuse scenarios typically found in applications. Notably, Logtalk enables simple implementations of common design patterns that are cumbersome at best using Prolog modules.
19+
These fundamental characteristics make module systems relatively simple to implement but also effectively prevent extending them to provide several key features present in Logtalk, some of them described here, that support a wide range of code encapsulation and reuse scenarios typically found in applications. Notably, Logtalk enables simple implementations of [common design patterns](https://github.com/LogtalkDotOrg/logtalk3/tree/master/examples/design_patterns) that are cumbersome at best using Prolog modules.
2020

21-
Logtalk also fixes some murky predicate semantics found in Prolog, improves some of its key mechanisms, and provides unique libraries. Note that all advantages described next _coexist_ with Prolog. I.e. Logtalk acts strictly as an _add-on_. It does not patch or modify Prolog's own built-in features.
21+
Logtalk also fixes some murky predicate semantics found in Prolog, improves some of its key mechanisms, and provides unique [libraries](https://logtalk.org/manuals/libraries/index.html). Note that all advantages described next _coexist_ with Prolog. I.e. Logtalk acts strictly as an _add-on_. It does not patch or modify Prolog's own built-in features.
2222

2323
### Protocols (interfaces)
2424

@@ -107,7 +107,7 @@ The Logtalk code is as readable as the module code, provides the same performanc
107107

108108
### Portability
109109

110-
Logtalk is written in highly portable code and currently supports [15 backend Prolog systems](download.html#requirements). It can support any Prolog system that complies with official and de facto core standards. Logtalk libraries and [developer tools](tools.html) are also portable. Portability implies robustness (by allowing testing with a larger number of Prolog systems) and risk mitigation (by facilitating switching between Prolog systems).
110+
Logtalk is written in highly portable code and currently supports [15 backend Prolog systems](download.html#requirements). It can support any Prolog system that complies with official and de facto core standards. Logtalk [libraries](https://logtalk.org/manuals/libraries/index.html) and [developer tools](tools.html) are also portable. Portability contributes to robustness (by allowing testing with a larger number of Prolog systems) and risk mitigation (by facilitating switching between Prolog systems).
111111

112112
In contrast, the ISO Prolog standard for modules is ignored (for sound reasons) by Prolog implementers. Worse, Prolog systems implementing a module system have significant differences that hinder portability. A few examples:
113113

@@ -128,11 +128,11 @@ In addition, not all Prolog systems implement modules. Examples include B-Prolog
128128

129129
Logtalk provides **fully portable** implementations of key mechanisms to all supported backend Prolog compilers. These include:
130130

131-
* Conditional compilation
132-
* Term-expansion
133-
* Message printing
134-
* Question asking
135-
* Reflection
131+
* [Conditional compilation](https://logtalk.org/manuals/refman/directives/conditional_compilation_directives.html)
132+
* [Term-expansion](https://logtalk.org/manuals/userman/expansion.html)
133+
* [Message printing](https://logtalk.org/manuals/userman/printing.html)
134+
* [Question asking](https://logtalk.org/manuals/userman/printing.html#asking-questions)
135+
* [Reflection](https://logtalk.org/manuals/userman/reflection.html)
136136

137137
Conditional compilation directives are found nowadays in most Prolog systems although some implementations are buggy, including in some high profile systems, if you need more than the very basic usage.
138138

_pages/tools.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ working code that also comply with coding guidelines. Lint checks include:
9494
- File, entity, predicate, and variable names not following official coding guidelines
9595
- Variable names that differ only on case
9696
- Clauses whose body is a disjunction
97+
- Naked meta-variables in cut-transparent control constructs
9798

9899
Lint checks are controlled by a set of [compiler flags](https://logtalk.org/manuals/userman/programming.html#lint-flags).
99100
Additional checks are provided by the [`make`](#make) and [`dead_code_scanner`](#dead-code-scanner) tools, by libraries, and by other developer tools. For large projects, the data generated by the [`code_metrics`](#code-metrics) tool may also be relevant in accessing the quality of your code.

_site/download.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ <h2 id="requirements">Requirements</h2>
291291

292292
<ul>
293293
<li><a href="http://www.picat-lang.org/bprolog/">B-Prolog 8.1 or later versions</a></li>
294-
<li><a href="http://ciao-lang.org">Ciao Prolog (version 1.21.0 or later)</a> <em>(experimental)</em></li>
294+
<li><a href="http://ciao-lang.org">Ciao Prolog (version 1.22.0 or later)</a> <em>(experimental)</em></li>
295295
<li><a href="http://ctp.di.fct.unl.pt/~amd/cxprolog/">CxProlog 0.98.1 or later versions</a></li>
296296
<li><a href="http://eclipseclp.org/">ECLiPSe 6.1#143 or later versions</a></li>
297297
<li><a href="http://www.gprolog.org/">GNU Prolog 1.4.5 or later versions</a></li>

_site/rationale.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@
287287
<li>Strongly biased towards implicit predicate qualification</li>
288288
</ul>
289289

290-
<p>These fundamental characteristics make module systems relatively simple to implement but also effectively prevent extending them to provide several key features present in Logtalk, some of them described here, that support a wide range of code encapsulation and reuse scenarios typically found in applications. Notably, Logtalk enables simple implementations of common design patterns that are cumbersome at best using Prolog modules.</p>
290+
<p>These fundamental characteristics make module systems relatively simple to implement but also effectively prevent extending them to provide several key features present in Logtalk, some of them described here, that support a wide range of code encapsulation and reuse scenarios typically found in applications. Notably, Logtalk enables simple implementations of <a href="https://github.com/LogtalkDotOrg/logtalk3/tree/master/examples/design_patterns">common design patterns</a> that are cumbersome at best using Prolog modules.</p>
291291

292-
<p>Logtalk also fixes some murky predicate semantics found in Prolog, improves some of its key mechanisms, and provides unique libraries. Note that all advantages described next <em>coexist</em> with Prolog. I.e. Logtalk acts strictly as an <em>add-on</em>. It does not patch or modify Prolog’s own built-in features.</p>
292+
<p>Logtalk also fixes some murky predicate semantics found in Prolog, improves some of its key mechanisms, and provides unique <a href="https://logtalk.org/manuals/libraries/index.html">libraries</a>. Note that all advantages described next <em>coexist</em> with Prolog. I.e. Logtalk acts strictly as an <em>add-on</em>. It does not patch or modify Prolog’s own built-in features.</p>
293293

294294
<h3 id="protocols-interfaces">Protocols (interfaces)</h3>
295295

@@ -374,7 +374,7 @@ <h3 id="objects-subsume-modules">Objects subsume modules</h3>
374374

375375
<h3 id="portability">Portability</h3>
376376

377-
<p>Logtalk is written in highly portable code and currently supports <a href="download.html#requirements">15 backend Prolog systems</a>. It can support any Prolog system that complies with official and de facto core standards. Logtalk libraries and <a href="tools.html">developer tools</a> are also portable. Portability implies robustness (by allowing testing with a larger number of Prolog systems) and risk mitigation (by facilitating switching between Prolog systems).</p>
377+
<p>Logtalk is written in highly portable code and currently supports <a href="download.html#requirements">15 backend Prolog systems</a>. It can support any Prolog system that complies with official and de facto core standards. Logtalk <a href="https://logtalk.org/manuals/libraries/index.html">libraries</a> and <a href="tools.html">developer tools</a> are also portable. Portability contributes to robustness (by allowing testing with a larger number of Prolog systems) and risk mitigation (by facilitating switching between Prolog systems).</p>
378378

379379
<p>In contrast, the ISO Prolog standard for modules is ignored (for sound reasons) by Prolog implementers. Worse, Prolog systems implementing a module system have significant differences that hinder portability. A few examples:</p>
380380

@@ -398,11 +398,11 @@ <h3 id="key-mechanisms">Key mechanisms</h3>
398398
<p>Logtalk provides <strong>fully portable</strong> implementations of key mechanisms to all supported backend Prolog compilers. These include:</p>
399399

400400
<ul>
401-
<li>Conditional compilation</li>
402-
<li>Term-expansion</li>
403-
<li>Message printing</li>
404-
<li>Question asking</li>
405-
<li>Reflection</li>
401+
<li><a href="https://logtalk.org/manuals/refman/directives/conditional_compilation_directives.html">Conditional compilation</a></li>
402+
<li><a href="https://logtalk.org/manuals/userman/expansion.html">Term-expansion</a></li>
403+
<li><a href="https://logtalk.org/manuals/userman/printing.html">Message printing</a></li>
404+
<li><a href="https://logtalk.org/manuals/userman/printing.html#asking-questions">Question asking</a></li>
405+
<li><a href="https://logtalk.org/manuals/userman/reflection.html">Reflection</a></li>
406406
</ul>
407407

408408
<p>Conditional compilation directives are found nowadays in most Prolog systems although some implementations are buggy, including in some high profile systems, if you need more than the very basic usage.</p>

_site/tools.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ <h2 id="lint-checker">Lint checker</h2>
361361
<li>File, entity, predicate, and variable names not following official coding guidelines</li>
362362
<li>Variable names that differ only on case</li>
363363
<li>Clauses whose body is a disjunction</li>
364+
<li>Naked meta-variables in cut-transparent control constructs</li>
364365
</ul>
365366

366367
<p>Lint checks are controlled by a set of <a href="https://logtalk.org/manuals/userman/programming.html#lint-flags">compiler flags</a>.

0 commit comments

Comments
 (0)