<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 08 Jan 1985 17:33:19 GMT
From   : Ken Dickey <kend%dadlaa.uucp@BRL-TGR.ARPA>
Subject: iLISP (SCHEME dialect) interpreter for CP/M

 
iLISP is a lexically scoped lisp based on the SCHEME dialect  
of Lisp which runs on Z80 CP/M 2.X 

I have been going through some of the exercises from Abelson & 
Sussmans' STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS (MIT
Press '85)--which is an excellent book--and having a lot of fun
doing so.  For $55, this is a really fun system for playing with
objects, packages, constraint systems, etc.  There are some
differences in this dialect and that described in Struct &
Interp, but I have yet to come across something I couldn't do
in a clean and obvious way.

Synopsis:
  Just like the big boys: read and run time macros, optimized
tail recursion (does not burn stack space; no [ugly] PROG or GO
needed), error handling and toploop fully user controlled, init
(startup) file, assembler interface, CATCH, floating point math,
CP/M access, assembler interface, list editor, TRACEing, BREAK,
user control of error handling, ramdom access function library
system (most convenient!), pretty printing functions, readable
reference manual (165 pg, + 60 pg intro for non-lispers), terminal
configuration options, full control of string and cons space
allocation, etc, etc.  Aside from this it is jus' plain fun to 
use (this is NOT a paid ad, really)!.   Warning: the intro for
beginners is much too formal.  The Struct & Interp is a much
better introduction for new lispers, who may need some hand-
holding in any case.  Unfortunately, no vectors or compilation.

general prims:
+ - * / ABS ADD1 ARCTAN COSINE FIX FLOAT MINUS REM SINE SUB1 SQRT
APPEND CAR CARS CDR CDRS CONS COPY DREVERSE LAST LENGTH LIST
MEMB MEMBER NCONC NTH REPLACA REPLACD REPLACAD TCONC GETPL GETPROP
LISTGET LISTPUT LISTREM PUTPROP REMPROP SETPL ALPHAORDER NCHARS 
PACK SET UNPACK UNSET ATOM EQ EQUAL LISTP LITATOM MACROP NULL
NUMNBERP PROPP VALUEP ZEROP = >= <= > < 

i/o and special prims:
CLEARBUF DIRIO FILLBUF INB INPUT PEEKC READ READP READC READLINE
SYNTAB SYNTAX CS CURSOR LINELENGTH MARGIN OUTB OUTPUT POSITION
PRIN1 PRIN2 PRINTLEVEL PRINT OUTB SPACES TAB CLOSE DISK DSKRES
FILEDIR GFD IOBYTE OPEN OPENP SFP ARGCNT ASCII BYTE CHAR ERR
EVAL DEFEXP DESCRIBE EXIT FREE FULL LOAD MEMORY PROG1 RECLAIM
RESET MAP TERPRI TYPE UNSETF

also has a number of macros and special forms (MAP functions, 
PROGN, DEFINE, SETQ, SELECTQ, COND, LET, LETSYS, etc) and a
bunch of utility functions (string handling, statistics, Eliza,
etc).  There is more, but I'm tired of typing and you get the idea.

As functions are full-fledged data objects, they can be assigned
to, allowing you to do things like generalize "+" to lists, eg:
(SETQ OLD-ADD +)       ; expects 2 args
(DEFINE + ARGS (MAP ID ARGS OLD-ADD 0))
(UNSET 'OLD-ADD)
will now allow (+ 4 3 6) =>13 instead of an error (2 args expected)
and (+ ) =>0.

Oh, yes:
COMPUTING INSIGHTS
PO BOX 4033
Madison, Wisconsin 53711
($49.95 + $5 ship)

Lithp ith lithening!
-Ken Dickey
UUCP:           HOST!tektronix!dadla!kend
   Where HOST is any one of:
       masscomp,decvax,allegra,uf-cgrl,mit-eddie,mit-ems,
       uoregon,psu-cs,orstcs,zehntel,ucbcad,ucbvax,purdue,
       uw-beaver,reed, ogcvax,ihnp4,tekred,minn-ua,cbosg

CSnet: kend%dadla@tektronix 
ARPAnet: kend%dadla%tektronix@csnet-relay
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>