[MAXIMA] Extending functionality



Ted,

About calling other programs from Maxima and vv,
that is possible but somewhat problematic. Be that as it may,
several GUI's have been created as separate programs.
See http://maxima.sourceforge.net/relatedprojects.shtml for a list.
In every case (so far as I know) the GUI front end talks to
Maxima via a socket. The difficult part of that approach is that
it is hard to know when Maxima has completed a computation
or if it is waiting for more input. There is an assumption in the
Maxima code that there is always someone sitting at the
console. I am considering ways to weaken that assumption
but the problem is nontrivial.

Aside from working with sockets, there is also the possibility
of using a function call interface. It is trivial to call Lisp
functions from Maxima -- if myprogram.lisp contains
a function FOO then load("myprogram.lisp"); ?foo();
is enough. myprogram.lisp can also call Maxima functions.
There is more about Lisp & Maxima in the reference manual.
See "Lisp and Maxima" at
http://maxima.sourceforge.net/docs/manual/en/maxima.html .
? lisp at the interactive prompt should find the same text.

Calling C or Fortran is theoretically possible but more work,
as it would require using a so-called foreign function
interface for Lisp. There is not yet a FFI which works for
all Lisp implementations, although there seems to be
at least one active project for that. Fortran functions can
be translated into Lisp via f2cl, see:
http://clocc.cvs.sourceforge.net/clocc/clocc/src/f2cl

Maybe you can tell us more about what you want to do,
then we could give some more specific advice.

All the best,
Robert Dodier