A common-LISP implementation of an extended Prolog system

  • Authors:
  • Giuseppe Cattaneo;Vincenzo Loia

  • Affiliations:
  • Diparfimento di Informatica ed Applicazioni, Università di SALERNO 1-84100., Istituto di Cibemetica C.N.R., 1-80072 Arco Felice (NAPOLI).;Istituto di Cibemetica C.N.R., 1-80072 Arco Felice, Laboratoire d' Informatique Universitè de Rouen, Mont Saint Aignan F-76134. (NAPOLI).

  • Venue:
  • ACM SIGPLAN Notices
  • Year:
  • 1988

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper presents an extended Common LISP implementation of a PROLOG interpreter named CL-Prolog, giving a detailed description of the major problems met and the principal data structures and algorithms used for their solution.A sort of PROLOG virtual processor has been implemented whose instructions are defined using LISP as microcode; particular attention is payed to the the Memory Management Unit and the basic Control Mechanism.The reader is supposed to be accustomed with PROLOG Programming and the evaluation of the first order Logic Predicates.The main characteristics of CL-Prolog are:- Clean separation from the host language.- Tail recursion handling and binding mechanism optimization.- Portability, flexibility, and extendibility of basic model.- Interaction between PROLOG code and host LISP interpreter.Interpreter's core is separated in three big modules in order to cut off the different issues :- the reader, the evaluator, and the resources manager -Finally the introduction of a double-stack recursion management has sped up the Backtracking mechanism; the resulting overall performances of this interpreter are really comparable to other commercial one even when they are implemented using procedural languages, supposed faster, confirming the possibility of using very high level languages as effective tools for real implementations.