[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Compiler Excised



   Date: 27 Sep 94 15:39 GMT
   From: MCELROY@AppleLink.Apple.COM (Peformigence Corp, H McElroy,APD)
   Subject: Compiler Excised

   We have an application that takes full advantage of the dynamic nature of
   Lisp.  It allows a non-programmer user to interact with the app and add
   intelligence to a knowledge base.  In order to do this the app has to do
   defclasses on the fly.  Unfortunately, to do this most efficiently, the app
   should be created without the compiler excised contrary to the licensing
   literature included with MCL[...]

I too have run into this problem in both MCL and ACL 2.0 (formerly ACL/PC).
It appears that Lisp providers have drawn the line at allowing you
to give away (or sell) their compiler and (in some cases) the whole evaluator,
macroexpander etc.  This is not, IMHO, an altogether unreasonable stand,
since you could pretty much just resell (cheaply) their product if you could 
deploy the full compiler/etc.

I have thought of five possible workarounds:
(If anyone can think of other approaches, please let me know!)
  (1) write your own compiler in MCL and provide it along with your app.
  (2) figure out an efficient interpretive way to do the language-processing
      you actually want in your app.  I'd bet there are much more efficient
      ways to do most things than calling EVAL.
(1+2) compile to an intermediate form that you can then interpret rapidly
      (using precompiled Lisp functions that you write).
  (3) Convince Apple's lawyers you really won't be putting out a competitive
      product if they just let you use compile for your set of special cases.
  (4) Have your users buy a full MCL license.

When (3) and (4) are impractical, I believe (1+2) is
probably the right answer (unless most of your users have MCL already, of
course). That way you don't have to learn assembly language (to say nothing of
the compilation expertise known to the MCL people), but the precompilation
phase can eliminate the obvious inefficiencies such as syntax checking and
(some) error checking as well as do all the bookkeeping operations
you may want.  Remember that your input language need not be all of 
Common Lisp.  Many times you can get by with a much simpler (and much easier
to implement) language.

-- Bob