From bf7988d4649e79296352a2c423cd8951651e822c Mon Sep 17 00:00:00 2001 From: kier-mirko Date: Sun, 24 Dec 2023 14:30:00 +0100 Subject: [PATCH] Rimosso call_method --- Prolog/README.org | 14 ++------------ Prolog/oop.pl | 10 ++-------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/Prolog/README.org b/Prolog/README.org index 8e8464b..0aeead1 100644 --- a/Prolog/README.org +++ b/Prolog/README.org @@ -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. diff --git a/Prolog/oop.pl b/Prolog/oop.pl index bdd0537..0c98b7e 100644 --- a/Prolog/oop.pl +++ b/Prolog/oop.pl @@ -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. -- 2.52.0