[comp.lang.lisp] <None>

gjc@paradigm.com (05/29/90)

Remember the good old days of "Applications Wars" at MIT?
At one time the proponents of various lisp-like languages
would prove something by writing a commonly used system
program in their language.

e.g. the MAILER on the MIT-DM machine was written in MDL.
and I remember FTP client on the MIT-LCS tops-20 machine being
replaced with one written in CLU at some point.

Of course the most used program of all: Zork, the super-hairy
adventure game, which was written in MDL.

John Kulp wrote a bitmap conversion driver for a Gould electrostatic
plotter in Maclisp. It handled various fonts and line drawings
rather better than the Xerox Laser printer. But boy could that
thing suck down a KL-10. When MIT-MC was short of memory the thing
was a son of a bitch to have around.

Later on (post golden age one might say), the its INQUIR database
program was rewritten in Maclisp (used to be assembler).

The program that controlled the constance-ii  
mirror fusion experiment, drew the graphs, analyzed the data,
etc, was written in PDP-10 Maclisp. A network interface
subroutine package was used in that one, as the actually
data collection was done using realtime assembler coded stuff
on pdp-11's. (The same package probably also drove the gould printer).

Obviously I'm leaving out a lot of research programs, expert systems
such as OWL, parsers, GLS's Scheme compiler (rabbit), etc. 

-gjc

carroll@cs.uiuc.edu (Alan M. Carroll) (10/31/90)

A very basic question from a non-expert Lisper:

What is the best way to have a macro expand to more than 1 top-level form in
CommonLisp? Right now I use something like `(progn form1 form2 ...), but I
worry that since the forms aren't actually at the top level in the file,
they might not be processed/compiled/etc. correctly. What I want to accomplish
is to have macros that set up read/writers in CLOS automatically (I have large
numbers of almost identical ones, only the class name / slot names change).
Thanks!

halvers@betelgeuse.crd.ge.com (Pete Halverson) (10/31/90)

In article <1990Oct30.225047.17818@ux1.cso.uiuc.edu> Alan M. Carroll writes:
>What is the best way to have a macro expand to more than 1 top-level form in
>CommonLisp? Right now I use something like `(progn form1 form2 ...), but I
>worry that since the forms aren't actually at the top level in the file,
>they might not be processed/compiled/etc. correctly. 

Using progn is the accepted way to handle macros with multiple forms.  In
CLtL.1, Steele said that "if a progn form appears at a top level, then all
forms within that progn are considered by the compiler to be top-level
forms".  Furthermore, in the latest version, apparently "compilers must
handle defining forms properly in *all* situations, not just top-level
contexts" [emphasis added].

--
===============================================================================
Pete Halverson                        		    INET: halverson@crd.ge.com 
GE Corporate R&D Center	                      UUCP: uunet!crd.ge.com!halverson
Schenectady, NY                     "Money for nuthin' and your MIPS for free"

masinter@parc.xerox.com (Larry Masinter) (11/01/90)

>Using progn is the accepted way to handle macros with multiple forms.  In
>CLtL.1, Steele said that "if a progn form appears at a top level, then all
>forms within that progn are considered by the compiler to be top-level
>forms".  Furthermore, in the latest version, apparently "compilers must
>handle defining forms properly in *all* situations, not just top-level
>contexts" [emphasis added].

There's still a distinction between top level and not, however. The
following is fine:

(progn 
   (defmacro pair (x y) `(cons ,x ,y))
   (defun get-pair (x y) (pair x y)))


(get-pair 1 2) => '(1 . 2)

but

(defun definem () 
    (defmacro pair (x y) `(cons ,x ,y))
    (defun get-pair (x y) (pair x y)))
(definem)
(get-pair) 

is an error in a file to be compiled, since

   "Users must ensure that the
    body of the macro is evaluable at compile time if it is referenced
    within the file being compiled."


Writing down what works and doesn't was painful.

--
Larry Masinter (masinter@parc.xerox.com)
Xerox Palo Alto Research Center (PARC)
3333 Coyote Hill Road; Palo Alto, CA USA 94304
Fax: (415) 494-4333

Jenny.Rowland@levels.sait.edu.au (05/27/91)

can someone help me with information about parallel Lisps - how to get, cost
etc. e.g. *Lisp, QLisp, MultiLisp, EuLisp, LindaLisp


Jenny Rowland

Jenny.rowland@sait.edu.au


University of South Australia