lisp and maxima intertwined



Hello Andrew,

> How can I just sandwich lisp in maxima like "1+f(10) +
> lisp((+ 1 2 (the :three) 4)) + 2"? (where "lisp" is a
> maxima macro and "the" is a shadowed symbol which
> is now a lisp macro).

I wouldn't try too hard to wedge Lisp input into Maxima.
It can be done, but the result will be clumsy; I doubt if
it will be popular with your users.

Better for your users to adapt the Lisp objects in question
to something Maxima is comfortable with.
It is really quite simple: Maxima prefers user-visible symbols
to begin with $ or %, and requires every nonatomic expression
to have a car which is a list; the caar is the name of the operator.

For example, I'll guess that rule objects look something like
(<antecedent> <consequence>) at present.
Maxima parses 'if <antecedent> then <consequence>
into ((%mcond) <antecedent> <consequence> t nil).
If that's not convenient we can talk about user-defined operators.
In any event, the goal is to get Maxima to do the parsing.

> Oh yeah, I know this is GPL and not LPGL or LLGPL,
> does that mean I should go with Macsyma?  I just want to create.

The relevant question, I believe, is whether your creation
constitutes a "derived work" of Maxima.
If it is not a derived work, you (or your employer or whoever
is the copyright holder) get to choose any license terms you please.
But if you have a commercial interest in your project,
you'd better talk to a lawyer. Disclaimer: I am not a lawyer.

A business model for a rule system might be to give away
the software and charge for consulting. Dunno if that works
for you.

Robert Dodier