Text this: Formal and Practical Aspects of Implementing Abstract Data Types in the Prolog Instruction.