Re: [Maxima] problem calling MAXIMA function at lisp level
Subject: Re: [Maxima] problem calling MAXIMA function at lisp level
From: Wolfgang Jenkner
Date: 12 Jan 2003 19:06:30 +0100
go_furuya@infoseek.jp writes:
> "Wang Yin" writes:
> > (C1) FOO(X, Y) := X + Y + 3;
> >
> > then, I press Ctrl-C to enter lisp level, and :
> >
> > MAXIMA>>(mfuncall '$foo 4 5)
> >
> > but I got the following answer:
> >
> > (($FOO SIMP) 4 5)
> >
> > not 12 as the manual says.
> >
> > Is the manual too old? Where can I find a good book for MAXIMA?
>
> This problem is caused by useing $foo not |$foo|.
> (C1) foo(x,y):=x+y+3$
> C2) :lisp(symbol-plist '|$foo|)
> (MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $x $y) ((MPLUS) $x $y 3))))
>
> (C2) :lisp(MEVAL '(|$foo| 4 3))
> 10
> (C2) :lisp(mfuncall '|$foo| 4 3)
> 10
>
Well, Wang Yin uses an uppercase FOO, which corresponds to the symbol
|$FOO| (and $foo is read like |$FOO|). This means that everything
should work as the manual says, and, in fact, under Clisp and SBCL it
does so.
Wolfgang