Permission is granted for unrestricted non-commercial use
XLISP TABLE OF CONTENTS Page 2
Table of Contents
TABLE OF CONTENTS 2
INTRODUCTION 4
A NOTE FROM THE AUTHOR 5
XLISP COMMAND LOOP 6
BREAK COMMAND LOOP 7
DATA TYPES 8
THE EVALUATOR 9
LEXICAL CONVENTIONS 10
READTABLES 11
LAMBDA LISTS 12
OBJECTS 14
SYMBOLS 17
EVALUATION FUNCTIONS 18
SYMBOL FUNCTIONS 19
PROPERTY LIST FUNCTIONS 21
ARRAY FUNCTIONS 22
LIST FUNCTIONS 23
DESTRUCTIVE LIST FUNCTIONS 26
PREDICATE FUNCTIONS 27
CONTROL CONSTRUCTS 29
LOOPING CONSTRUCTS 31
THE PROGRAM FEATURE 32
DEBUGGING AND ERROR HANDLING 33
ARITHMETIC FUNCTIONS 34
BITWISE LOGICAL FUNCTIONS 36
STRING FUNCTIONS 37
XLISP TABLE OF CONTENTS Page 3
CHARACTER FUNCTIONS 39
INPUT/OUTPUT FUNCTIONS 41
THE FORMAT FUNCTION 42
FILE I/O FUNCTIONS 43
STRING STREAM FUNCTIONS 44
SYSTEM FUNCTIONS 45
EXAMPLES 47
XLISP INTRODUCTION Page 4
INTRODUCTION
XLISP is an experimental programming language combining some of
the features of Common Lisp with an object-oriented extension
capability. It was implemented to allow experimentation with
object-oriented programming on small computers.
There are currently implementations of XLISP running on the IBM-
PC and clones under MS-DOS, on the Macintosh, the Atari-ST and
the Amiga. It is completely written in the programming language
'C' and is easily extended with user written built-in functions
and classes. It is available in source form to non-commercial
users.
Many Common Lisp functions are built into XLISP. In addition,
XLISP defines the objects 'Object' and 'Class' as primitives.
'Object' is the only class that has no superclass and hence is
the root of the class heirarchy tree. 'Class' is the class p✓≡ננננננננÇ⇨é⇨נÄ⇧üנî⇧Ä⇦⇦✓⇦OÄ⇦êOé ä⇧Ä î✓⇦Oבé⇧נé⇦OüâêOÇ üéOÇÇê⇧נüâÄ⇧נé⇦pננננננננÄ נé ä⇧Ä î✓OÇ✓נé⇧ä✓⇧êא@≡≡ננננננננüâé⇦OëÇ ✓ üנé⇦OÄOîäé✓✓נëê⇦⇦é◆üé נÇ✓נâæÆ⇦◆ijננÆ⇧נÄ⇦⇦ ✓⇦Oä ✓pננננננננÇ Ç ⇧ê ê✓OÇ✓נæÆ⇦◆ er than a
number, the entire trace back stack is printed.
XLISP then enters a read/eval/print loop to allow the user to
examine the state of the interpreter in the context of the
error. This loop differs from the normal top-level
read/eval/print loop in that if the user invokes the function
'continue', XLISP will continue from a correctable error. If
the user invokes the function 'clean-up', XLISP will abort the
break loop and return to the top level or the next lower
numbered break loop. When in a break loop, XLISP prefixes the
break level to the normal prompt.
If the symbol '*breakenable*' is nil, XLISP looks for a
surrounding errset function. If one is found, XLISP examines
the value of the print flag. If this flag is true, the error
message is printed. In any case, XLISP causes the errset
function call to return nil.
If there is no surrounding errset function, XLISP prints the
error message and returns to the top level.
XLISP DATA TYPES Page 8
DATA TYPES
There are several different data types available to XLISP