self(Self)
Returns the object that has received the message under processing. Note that this predicate implies an instantiation between its argument and the corresponding implicit context argument in the predicate containing the call. This instantiation occurs at the clause head, not at the clause body.
self(?object_identifier)
(none)
test :- self(Self), % after compilation, the write/1 write('executing a method in behalf of '), % call will be the first goal on writeq(Self), nl. % the clause body