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
** 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
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).
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, _, _)).