]> git.leonardobizzoni.com Git - ObjectOriented-Prolog-Lisp/commitdiff
Rimosso call_method
authorkier-mirko <mirkotolentino1@gmail.com>
Sun, 24 Dec 2023 13:30:00 +0000 (14:30 +0100)
committerkier-mirko <mirkotolentino1@gmail.com>
Sun, 24 Dec 2023 13:30:00 +0000 (14:30 +0100)
Prolog/README.org
Prolog/oop.pl

index 8e8464beac30ce3c603218ae4ba18f9d33426094..0aeead12391bf0771d582bc9fb5d0a2f407965a2 100644 (file)
@@ -240,8 +240,7 @@ add_part(ClassName, [method(Name, ArgList, Body) | OtherParts]) :-
       Head =.. [Name, InstanceName | ArgList],
       !,
       replace(this,InstanceName,Body,NewBody),
-      asserta(Head :- (call_method(InstanceName, ClassName, NewBody))),
-
+      asserta(Head :- (is_instance(InstanceName, ClassName), NewBody),
       add_part(ClassName, OtherParts).
 #+end_src
 
@@ -288,22 +287,13 @@ check_fields(InstanceName, [=(Field, Value) | Other]) :-
     check_fields(InstanceName, Other).
 #+end_src
 
-** call_method
-#+begin_src prolog :tangle oop.pl
-call_method(Instance, ClassName, Body) :-
-    is_instance(Instance, ClassName),
-    asserta(is_instance(this, ClassName)),
-    call_cleanup(call(Body), (
-                    retractall(is_instance(this, ClassName)))).
-#+end_src
-
 ** replace
 #+begin_src prolog :tangle oop.pl
 replace(Subterm0, Subterm, Term0, Term) :-
        Term0 == Subterm0,
        !,
        Term = Subterm.
-replace(Subterm0, Subterm, Term0, Term) :-
+replace(_Subterm0, _Subterm, Term0, Term) :-
        var(Term0),
        !,
        Term = Term0.
index bdd05373bba11c27432a81c7d28dfa371b04f31a..0c98b7e0f8a3db74fe03449f13b21a17486322e9 100644 (file)
@@ -158,7 +158,7 @@ add_part(ClassName, [method(Name, ArgList, Body) | OtherParts]) :-
     Head =.. [Name, InstanceName | ArgList],
     !,
     replace(this,InstanceName,Body,NewBody),
-    asserta(Head :- (call_method(InstanceName,ClassName, NewBody))),
+    asserta(Head :- (is_instance(InstanceName, ClassName), NewBody)),
 
     add_part(ClassName, OtherParts).
 
@@ -196,17 +196,11 @@ check_fields(InstanceName, [=(Field, Value) | Other]) :-
     field(InstanceName, Field, Value),
     check_fields(InstanceName, Other).
 
-call_method(Instance, ClassName, Body) :-
-    is_instance(Instance, ClassName),
-    asserta(is_instance(this, ClassName)),
-    call_cleanup(call(Body), (
-                    retractall(is_instance(this, ClassName)))).
-
 replace(Subterm0, Subterm, Term0, Term) :-
        Term0 == Subterm0,
        !,
        Term = Subterm.
-replace(Subterm0, Subterm, Term0, Term) :-
+replace(_Subterm0, _Subterm, Term0, Term) :-
        var(Term0),
        !,
        Term = Term0.