From: Joseph Yip
Subject: akcl: compiler or interpretor?
Date: 
Message-ID: <31786@ut-emx.UUCP>
Hi,

I am new to Lisp. Recently, someone suggested me AKCL. Is AKCL a
compiler or an interpretor? 

Also, have anyone done any communications with between AKCL and C?

Thank you.

Joseph

From: Piet van Oostrum
Subject: Re: akcl: compiler or interpretor?
Date: 
Message-ID: <3474@ruuinf.cs.ruu.nl>
In article <·····@ut-emx.UUCP>, ···@walt (Joseph Yip) writes:
 |Hi,
 |
 |I am new to Lisp. Recently, someone suggested me AKCL. Is AKCL a
 |compiler or an interpretor? 
 |
The package contains both.

 |Also, have anyone done any communications with between AKCL and C?
 |
This is a standard thing. There is a fasler (fast loader) to load C routines.
-- 
Piet* van Oostrum, Dept of Computer Science, Utrecht University,
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
Telephone: +31-30-531806   Uucp:   uunet!mcsun!ruuinf!piet
Telefax:   +31-30-513791   Internet:  ····@cs.ruu.nl   (*`Pete')
From: Paul Frederick Snively
Subject: Re: akcl: compiler or interpretor?
Date: 
Message-ID: <30879@cup.portal.com>
[Stuff about whether AKCL consists of an interpreter or compiler deleted]

Good news!  AKCL is (so far as I can tell) a complete [Steele 84] Common Lisp
implementation.  Since Steele specifies that a correct implementation include
both an interpreter and a compiler, AKCL does indeed provide both.

What AKCL does is rather interesting.  AKCL is written in C, and implements
its interpreter in a way that basically makes sense given its environment
(UNIX, the C preprocessor and compiler, etc.)

What the AKCL compiler does, then, is to compile your Lisp code to
intermediate C code, and passes that to the standard C compiler.  It then
takes advantage of the fact that the standard UNIX linking loader can link-
edit an object file incrementally--that is, it can link-edit into a running
image--to load the object file into the running Lisp image.

Thanks to the fact that the C compiler is used as an intermediate step anyway,
there is a facility in AKCL for the definition of functions that are written
in C instead of Lisp (they only work when compiled, of course; the interpreter
simply ignores them).  There is also the "faslink" function, which can be used
to link in existing object code, provided that a Lisp interface is supplied
for it (typically, then, you'll create a .lsp file that provides the
interface, compile that to a .o file, and then faslink that .o file along with
the existing .o file(s)).

Hope this helps!

Paul Snively
Software Terrorist, MacDTS
Apple Computer, Inc.
From: John Gateley
Subject: Re: akcl: compiler or interpretor?
Date: 
Message-ID: <1990Jun18.150226.27622@csc.ti.com>
In article <·····@cup.portal.com> ·····@cup.portal.com (Paul Frederick Snively) writes:
>Good news!  AKCL is (so far as I can tell) a complete [Steele 84] Common Lisp
>implementation.  Since Steele specifies that a correct implementation include
>both an interpreter and a compiler, AKCL does indeed provide both.

Minor nitpick for the week: Steele does not specify that an implementation
contain an interpreter:
From page 321 (or 490 of the tarnished edition) "... An interpretive
implementation is not required, however. A permissible alternative
approach is for the evaluator first to completeley compile the form
into machine executable code and then invoke the resulting code."

What Steele requires is an eval function and a top level loop.

John
·······@m2.csc.ti.com