is_instance(InstanceName, ClassName),
check_fields(InstanceName, Fields).
-check_fields(InstanceName, []).
+check_fields(_InstanceName, []).
check_fields(InstanceName, [=(Field, Value) | Other]) :-
field(InstanceName, Field, Value),
check_fields(InstanceName, Other).
*** Esempio pratico
-** fields
+** fieldx
*** Definizione
-
+- Non ho capito se così va bene
+- Non ho capito a cosa serve
+- Non ho capito quando va usato
*** Implementazione
#+begin_src prolog :tangle oop.pl
+fieldx(Instance, [FieldName], Res) :-
+ field(Instance, FieldName, Res),
+ !.
+fieldx(Instance, [FieldName | Others], Res) :-
+ is_instance(Instance),
+ field(Instance, FieldName, Value),
+ fieldx(Value, Others, Res).
#+end_src
*** Esempio pratico
is_instance(InstanceName, ClassName),
check_fields(InstanceName, Fields).
-check_fields(InstanceName, []).
+check_fields(_InstanceName, []).
check_fields(InstanceName, [=(Field, Value) | Other]) :-
field(InstanceName, Field, Value),
check_fields(InstanceName, Other).
:- dynamic field/3.
-
+fieldx(Instance, [FieldName], Res) :-
+ field(Instance, FieldName, Res),
+ !.
+fieldx(Instance, [FieldName | Others], Res) :-
+ is_instance(Instance),
+ field(Instance, FieldName, Value),
+ fieldx(Value, Others, Res).
:- dynamic is_class/1.
:- dynamic is_child_of/2.