POP-11: a brief description


Pop-11 is the core language of the Poplog system. It is a LISP-like language with an appearance more like PASCAL.

Here is an example:

define polynomial(x, coefficients) -> y;
    lvars c, y = 0;
    for c in coefficients do
        y * x + c -> y;
    endfor;
enddefine;

;;; print the value of 11x^3 + 4x^2 - 5 for x = 7
polynomial(7, [11 4 0 -5]) =>
        

It is a much expanded superset of POP2, the language developed for AI research at Edinburgh University. The main features of POP-11 are defined in the files listed in the $usepop/pop/ref/ directory (e.g. POP-11 syntax, described in $usepop/ref/popsyntax). Information on library files is given in HELP (e.g. for an introduction to POP-11, see $usepop/help/POP11) and TEACH files (see below).

POP-11 provides a wide variety of syntactic constructs: list processing, pattern matching, properties (hashed association tables), processes, tree-structured sections, save and restore, 'autoloading' of library files, many built in data-types, and user-defined data-types, lexical and dynamic scoping of variables, facilities for implementing compilers and many other features.

Most of the facilities of Common Lisp are also in POP-11, including indefinite precision arithmetic, ratios, complex numbers. Yet POP-11 is a much smaller system than most Common Lisp systems. A fairly complete specification of Pop-11 can be found the files in $usepop/pop/ref/ and $usepop/pop/help.

There is a substantial amount (25Mb) of online documentation. Also, the book POP-11: A PRACTICAL LANGUAGE FOR ARTIFICIAL INTELLIGENCE by R. Barrett, A. Ramsay and A. Sloman, published by Ellis Horwood and John Wiley (ISBN 0-85312-940-1) provides a good introduction to a subset of the language. Other references are given in $usepop/pop/help/poprefs


Back Editors: Steve Leach & Graham Higgins (jointly)