From a7c701af4706c04055718e56b8c2fb909c142dc1 Mon Sep 17 00:00:00 2001 From: LeonardoBizzoni Date: Wed, 20 Dec 2023 20:54:19 +0100 Subject: [PATCH] Fixato passaggio di parametri ad un metodo --- Prolog/README.org | 7 +++---- Prolog/oop.pl | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Prolog/README.org b/Prolog/README.org index 9b22483..1812694 100644 --- a/Prolog/README.org +++ b/Prolog/README.org @@ -211,7 +211,7 @@ add_part(ClassName, [method(Name, ArgList, Body) | OtherParts]) :- asserta(is_member(method(Name, ArgList, Body), ClassName)), Fn =.. [Name, Instance | ArgList], - asserta(Fn :- call_method(Instance, ClassName, ArgList, Body)), + asserta(Fn :- call_method(Instance, ClassName, Body)), add_part(ClassName, OtherParts). #+end_src @@ -273,10 +273,9 @@ define_this([=(Key, Value) | Other]) :- ** call_method #+begin_src prolog :tangle oop.pl -call_method(Instance, ClassName, ArgList, Body) :- +call_method(Instance, ClassName, Body) :- is_instance(Instance, ClassName), define_this(Instance), - maplist(call, [Body | ArgList]), - !, + call(Body), retractall(field(this, _, _)). #+end_src diff --git a/Prolog/oop.pl b/Prolog/oop.pl index 06bcfda..9cf2063 100644 --- a/Prolog/oop.pl +++ b/Prolog/oop.pl @@ -154,7 +154,7 @@ add_part(ClassName, [method(Name, ArgList, Body) | OtherParts]) :- asserta(is_member(method(Name, ArgList, Body), ClassName)), Fn =.. [Name, Instance | ArgList], - asserta(Fn :- call_method(Instance, ClassName, ArgList, Body)), + asserta(Fn :- call_method(Instance, ClassName, Body)), add_part(ClassName, OtherParts). @@ -201,9 +201,8 @@ define_this([=(Key, Value) | Other]) :- asserta(field(this, Key, Value)), define_this(Other). -call_method(Instance, ClassName, ArgList, Body) :- +call_method(Instance, ClassName, Body) :- is_instance(Instance, ClassName), define_this(Instance), - maplist(call, [Body | ArgList]), - !, + call(Body), retractall(field(this, _, _)). -- 2.52.0