Prolog per cercare di unificare la variabile /InstanceName/ con
un'istanza della classe /ClassName/ che, se la lista di "assegnamenti"
non è nulla, abbia i valori dei field specificati.
-/Naturalmente se non si ha nessun "assegmaneto" allora InstanceName/
+/Naturalmente se non si ha nessun "assegnamento" allora InstanceName/
/unifica con tutte e sole le istanze della classe specificata./
*** Implementazione
** inst
*** Definizione
-Dato il nome con cui è stata create l'istanza restituisce l'istanza
+Dato il nome con cui è stata creata l'istanza restituisce l'istanza
stessa.
Dato che nella nostra implementazione la creazione di un'istanza è la
Dato un predicato /Body/ questo viene separato nei suoi termini costituenti
(/funtore e argomenti/) e *per ogni* argomento richiama la /replace/.
In questo modo possiamo cercare l'atomo da sostituire anche all'interno di
-termini composti come chimate di funzioni.
+termini composti come chiamate di funzioni.
#+begin_src prolog :tangle oop.pl
replace(OldTerm, NewTerm, Body, NewTerm) :- Body == OldTerm, !.
Predicato utilizzato per la definizione della classe ricevuta da
[[*def_class][def_class]].
Dato che questa funzione utilizza /assert*/ per modificare la
-base di conoscenza, se dovessore verificarsi degli errori queste
-modifica rimarrebbero presenti.
-Per ciò non è consigliato utilizzare /def_class/ al suo posto.
+base di conoscenza, se dovessero verificarsi degli errori queste
+modifiche rimarrebbero presenti.
+Perciò non è consigliato utilizzare /def_class/ al suo posto.
Prima di aggiungere le informazioni della nuova classe alla base
di conoscenza vengono ereditate tutte le parti (/field e metodi/)
add_part(ClassName, Parts).
#+end_src
-*** Ereditazione di /parts/ da superclassi
+*** Ereditarietà di /parts/ da superclassi
Viene svolto inizialmente lo stesso controllo del [[*Effettivo predicato `def_class`][predicato precedente]]
con l'aggiunta del controllo sul primo genitore nella lista di genitori.
Se questo non è una classe allora non possiamo ereditare niente!
-Dopo di chè creiamo una relazione tra il genitore e la classe figlio
+Dopodiche creiamo una relazione tra il genitore e la classe figlio
che creerà una gerarchia di classi utile nel [[*Controllo dei tipi][controllo dei tipi]].
Questo permette ad un'istanza della classe figlio di
accedere *direttamente* ad ogni campo/metodo definito da una
add_part(ClassName, ParentParts).
#+end_src
-** Istanziazione di una classe
+** Creazione di una classe
*** Effettivo predicato `make`
Dato un atomo per /InstanceName/ possiamo procedere alla creazione
di un'istanza creando una relazione tra quest'atomo