::Message
Send a message to self. Only used in the body of a predicate definition. The argument should match a public or protected predicate of self. It may also match a private predicate if the predicate is within the scope of the object where the method making the call is defined, if imported from a category, if used from within a category, or when using private inheritance. When the predicate is declared but not defined, the message simply fails (as per the closed-world assumption).
The lookups for the message declaration and the corresponding method are performed using a depth-first strategy. A message to self necessarily requires the use of dynamic binding but a caching mechanism is used to improve performance in subsequent messages.
::+callable
instantiation_error
type_error(callable, Message)
permission_error(access, private_predicate, Functor/Arity)
existence_error(predicate_declaration, Functor/Arity)
area(Area) :- ::width(Width), ::height(Height), Area is Width*Height.