sender(Sender)
Returns the object that has sent the message under processing. This private method is translated into a unification between its argument and the corresponding implicit context argument in the predicate containing the call. This unification occurs at the clause head, not at the clause body.
sender(?object_identifier)
(none)
% after compilation, the write/1 call will be the first goal on the clause body: test :- sender(Sender), write('executing a method to answer a message sent by '), writeq(Sender), nl.