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.