SPOOL
is a Prolog based object oriented language.
See [FH86].
It extends Prolog with classes, instance variables,
and message passing to enable the communication
between instances of clauses.
The clauses defined for a class act as methods.
In a method call of the form
both the Receiver and the Message may be variables,
thus allowing backtracking
both with respect to the destination of the message
and the method that will be applied.
This rather unwieldy backtracking behavior is made possible
by embedding methods in Prolog clauses representing a class of objects.
See [Yo86] for the details of the compilation
of SPOOL to Prolog.
The advantage of this approach is that it combines the expressiveness
of a logic programming language with the organizational
capabilities of object oriented programming.
To our mind, the backtracking that may arise from
anonymous method calls, where the destination is a variable,
seems somewhat extravagant.
In [FH86] an application of SPOOL for producing program
annotations is described.