1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-01-17 13:38:38 +01:00

[logtalk/en] [logtalk/it] Update for the current major version of the language (#4526)

This commit is contained in:
Paulo Moura 2024-05-13 13:11:24 +01:00 committed by GitHub
parent e50493e4d3
commit bd5b3fb392
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 7 deletions

View File

@ -379,6 +379,9 @@ Se il codice sorgente dell'oggetto non è disponibile e bisogna correggere l'app
Dopo la compilazione e il caricamento della categoria nell'applicazione in esecuzione si ottiene: Dopo la compilazione e il caricamento della categoria nell'applicazione in esecuzione si ottiene:
```logtalk ```logtalk
?- set_logtalk_flag(complements, allow).
yes
?- {patch}. ?- {patch}.
yes yes
@ -387,7 +390,7 @@ bar
yes yes
``` ```
Poiché l'hot-patching pregiudica forzatamente l'incapsulamento, un apposito flag di compilazione `complementary` può essere impostato (a livello globale o per un singolo oggetto) per consentire, limitare o prevenire l'hot-patching. Poiché l'hot-patching interrompe forzatamente l'incapsulamento, è possibile impostare il flag del compilatore `complementary` può essere impostato (a livello globale o per un singolo oggetto) per consentire, limitare o prevenire l'hot-patching.
# Oggetti Parametrici e Categorie # Oggetti Parametrici e Categorie
@ -463,6 +466,9 @@ Logtalk supporta l'_event-driven programming_ mediante la definizione di eventi
Supponendo che l'oggetto `tracer` e l'oggetto `list` definito in precedenza siano stati già compilati e caricati, si possono osservare i gestori di eventi in azione durante l'invio di un messaggio: Supponendo che l'oggetto `tracer` e l'oggetto `list` definito in precedenza siano stati già compilati e caricati, si possono osservare i gestori di eventi in azione durante l'invio di un messaggio:
```logtalk ```logtalk
?- set_logtalk_flag(events, allow).
yes
?- list::member(X, [1,2,3]). ?- list::member(X, [1,2,3]).
call: list <-- member(X, [1,2,3]) from user call: list <-- member(X, [1,2,3]) from user
@ -481,11 +487,11 @@ La programmazione event-driven può essere vista come una forma di _computationa
# Espressioni lambda # Espressioni lambda
Logtalk supporta anche le espressioni lambda. I parametri della espressioni lambda sono rappresentati mediante una lista con l'operatore infisso `(>>)/2` che collega i parametri alla relativa lambda espressione. Ecco alcuni semplici esempi di che usano i meta-predicati. Logtalk supporta anche le espressioni lambda. I parametri della espressioni lambda sono rappresentati mediante una lista con l'operatore infisso `(>>)/2` che collega i parametri alla relativa lambda espressione. Ecco alcuni semplici esempi che utilizzano la libreria `meta`.
```logtalk ```logtalk
?- {library(metapredicates_loader)}. ?- {meta(loader)}.
yes yes
?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys). ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).

View File

@ -1,8 +1,8 @@
--- ---
language: Logtalk language: Logtalk
filename: learnlogtalk.lgt
contributors: contributors:
- ["Paulo Moura", "http://github.com/pmoura"] - ["Paulo Moura", "http://github.com/pmoura"]
filename: learnlogtalk.lgt
--- ---
Logtalk is an object-oriented logic programming language that extends and leverages Prolog with modern code encapsulation and code reuse mechanisms without compromising its declarative programming features. Logtalk is implemented in highly portable code and can use most modern and standards compliant Prolog implementations as a back-end compiler. Logtalk is an object-oriented logic programming language that extends and leverages Prolog with modern code encapsulation and code reuse mechanisms without compromising its declarative programming features. Logtalk is implemented in highly portable code and can use most modern and standards compliant Prolog implementations as a back-end compiler.
@ -376,6 +376,9 @@ If the object source code is not available and we need to fix an application run
After compiling and loading the category into the running application we will now get: After compiling and loading the category into the running application we will now get:
```logtalk ```logtalk
?- set_logtalk_flag(complements, allow).
yes
?- {patch}. ?- {patch}.
yes yes
@ -384,7 +387,7 @@ bar
yes yes
``` ```
As hot-patching forcefully breaks encapsulation, there is a `complements` compiler flag that can be set (globally or on a per-object basis) to allow, restrict, or prevent it. As hot-patching forcefully breaks encapsulation, the `complements` compiler flag can be set (globally or on a per-object basis) to allow, restrict, or prevent it.
# Parametric objects and categories # Parametric objects and categories
@ -460,6 +463,9 @@ Logtalk supports _event-driven programming_ by allowing defining events and moni
Assuming that the `tracer` object and the `list` object defined earlier are compiled and loaded, we can observe the event handlers in action by sending a message: Assuming that the `tracer` object and the `list` object defined earlier are compiled and loaded, we can observe the event handlers in action by sending a message:
```logtalk ```logtalk
?- set_logtalk_flag(events, allow).
yes
?- list::member(X, [1,2,3]). ?- list::member(X, [1,2,3]).
call: list <-- member(X, [1,2,3]) from user call: list <-- member(X, [1,2,3]) from user
@ -478,10 +484,10 @@ Event-driven programming can be seen as a form of _computational reflection_. Bu
# Lambda expressions # Lambda expressions
Logtalk supports lambda expressions. Lambda parameters are represented using a list with the `(>>)/2` infix operator connecting them to the lambda. Some simple examples using library meta-predicates: Logtalk supports lambda expressions. Lambda parameters are represented using a list with the `(>>)/2` infix operator connecting them to the lambda. Some simple examples using library `meta`:
```logtalk ```logtalk
?- {library(metapredicates_loader)}. ?- {meta(loader)}.
yes yes
?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys). ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).