Maxima 是函数式的,它使用 Common Lisp 写的。所以有很多 LISP 的特性。下面列举一些:
跟 LISP 一样,用单引号 ' 可以防止后面的内容被计算出来。
'F(x); /* 原封不动返回 F(x) */
quosiquote. 参数的值被计算出来,但是函数并不被调用。
比如:
f(x):=x*2; b:10; FUNMAKE(f,[b]);
将得到 F(b) 这个表达式。而不会得到 20.
b:10; f(x):=x*2; exp:FUNMAKE(f, [b]); /* 得到一个表达式 F(10) */ ''exp; /* 得到这个 F(10) 的值:20 */
这种定义方式可以在运行时进行,这样我们可以按条件确定是否执行 函数定义。
比如:
body:x+2; DEFINE(g(x), body); g(3); /* 得到 5 */