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. 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 |
|