[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiler Excised
- To: firstname.lastname@example.org
- Subject: Re: Compiler Excised
- From: email@example.com (Skip Egdorf)
- Date: Tue, 27 Sep 94 11:56:59 MDT
- Cc: MCELROY@applelink.apple.com
- In-reply-to: <9409271717.AA21545@brazil.cambridge.apple.com> (firstname.lastname@example.org)
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).
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
I have been using (4), but this is a bit hard. (RE: the discussion on
comp.lang.lisp regarding what it takes to convince a company to go
with Lisp rather than C for that new product...)
The two major things folks do that cause this are:
1. Use general eval. Usually bad. Slap the user's hand. Not the vendor's problem.
2. Use (eval '(defclass ...)) because nobody has agreed on the part of the
metaobject protocol for portable runtime class creation. Is it ensure-class?
Perhaps it is (make-instance 'standard-class)? Perhaps its...
This could be fixed by the vendors. Unfortunatly it takes agreement on just
whose mechanism to use. So we can lump it in with our dreams for a standard
defsys and FFI. ... And a few more turn to C++ and Visual Basic...