You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _pages/rationale.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,9 +16,9 @@ Logtalk is designed to _extend_ and _leverage_ Prolog. It provides an alternativ
16
16
* Default importing of module exported predicates when loading a module file
17
17
* Strongly biased towards implicit predicate qualification
18
18
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.
20
20
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.
22
22
23
23
### Protocols (interfaces)
24
24
@@ -107,7 +107,7 @@ The Logtalk code is as readable as the module code, provides the same performanc
107
107
108
108
### Portability
109
109
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).
111
111
112
112
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:
113
113
@@ -128,11 +128,11 @@ In addition, not all Prolog systems implement modules. Examples include B-Prolog
128
128
129
129
Logtalk provides **fully portable** implementations of key mechanisms to all supported backend Prolog compilers. These include:
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.
Copy file name to clipboardExpand all lines: _pages/tools.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,6 +94,7 @@ working code that also comply with coding guidelines. Lint checks include:
94
94
- File, entity, predicate, and variable names not following official coding guidelines
95
95
- Variable names that differ only on case
96
96
- Clauses whose body is a disjunction
97
+
- Naked meta-variables in cut-transparent control constructs
97
98
98
99
Lint checks are controlled by a set of [compiler flags](https://logtalk.org/manuals/userman/programming.html#lint-flags).
99
100
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.
Copy file name to clipboardExpand all lines: _site/rationale.html
+8-8Lines changed: 8 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -287,9 +287,9 @@
287
287
<li>Strongly biased towards implicit predicate qualification</li>
288
288
</ul>
289
289
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 <ahref="https://github.com/LogtalkDotOrg/logtalk3/tree/master/examples/design_patterns">common design patterns</a> that are cumbersome at best using Prolog modules.</p>
291
291
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 <ahref="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>
<p>Logtalk is written in highly portable code and currently supports <ahref="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 <ahref="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 <ahref="download.html#requirements">15 backend Prolog systems</a>. It can support any Prolog system that complies with official and de facto core standards. Logtalk <ahref="https://logtalk.org/manuals/libraries/index.html">libraries</a> and <ahref="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>
378
378
379
379
<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>
<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>
0 commit comments