[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:Glisp on Dev. CD
- To: INFO-MCL@CAMBRIDGE.APPLE.COM
- Subject: Re:Glisp on Dev. CD
- From: GREGGW@AppleLink.Apple.COM (Williams, Gregg)
- Date: 30 Sep 91 22:15 GMT
>> From: RANSON@LANNION.CNET.FR@INTERNET#?
>> I think GLisp is on the Developer's CDs. I don't have one right here
>> to check though...
What follows is the READ ME file for version 1.2 of GLisp, which is on the
latest Developer CD ("Desperately Seeking Seven" with pathname
Dev.CD Vol. VIII:
Development Platforms (Moof!):
##### BEGINNING OF READ ME FILE #####
Glisp READ ME
Generalized Lisp (or "Glisp" for short) is a new programming language built
ontop of Apple's Allegro Common Lisp. It is "generalized" in the sense that it
is a multilingual version of Lisp. It provides three syntaxes for Lisp:
ordinary Lisp, Mlisp, and Plisp.
You know about ordinary Lisp. Prefix notation and parentheses. Very easy for
programs to manipulate; less easy for humans.
Mlisp is an Algol-like syntax which is translated to Lisp. It has exactly the
same capabilities as ordinary Lisp, no more and no fewer. It provides a more
humanistic syntax for Lisp which reduces the number of parentheses, allows
infix operators, and in general makes Lisp programs easier for people to read.
For example, the Mlisp expression
if a=b then print("ok") else y := a*x^2 + b*x + c
is translated to
(cond ((= a b) (print "ok")) (t (setq y (+ (* a (expt x 2)) (* b x) c)))).
Plisp is a pattern matching language. Plisp functions are expressed as rewrite
rules. Plisp is suitable (in fact, optimized) for writing translators from one
language to another. For example, the Plisp rule
if <expression>:e1 then <expression>:e2 else <expression>:e3 ->
(cond (:e1 :e2) (t :e3))
could be used to translate the Mlisp conditional expression above. Plisp
functions are themselves translated to Lisp, but in their case there is an
interpreter which controls their execution. All Plisp functions are extensible
at runtime; users may add new rules to existing functions at any time.
Generalized Lisp provides a framework which allows these three languages to be
freely intermixed in a file. A programmer may choose the notation best suited
to the task, down to the routine level. All of the translators are written in
Plisp, and so all are extensible.
##### END OF READ ME #####