在Maxima中声明一个动态常量



我需要将一个变量声明为常量,该变量是在程序运行时生成的,我尝试了这种方法:

foo(var) := declare(''var, constant)$
foo(x)$
facts();

但这不起作用,我得到:

[kind(var, constant)]

每次。

相反:

[kind(x, constant)]

当我写没有函数的代码时,一切都很好:

var: x$
declare(''var, constant)$
facts();

我得到:

[kind(x, constant)]

有人知道如何通过函数动态执行此操作吗?

确保对参数求值的传统方法是将函数apply作为参数。例如:

apply (declare, [var, 'constant]);

或者,在一个函数中:

foo(var) := apply (declare, [var, 'constant]);

apply计算其参数,因此参数是根据函数看到它们的时间来计算的。

引号''var在函数中没有预期的效果,因为引号仅在解析表达式时应用。因此,以后对var的任何赋值都无效。

我建议不要使用eval_string。几乎总是有比字符串处理更好的方法来做任何事情;在这种情况下,更好的方式是CCD_ 6。

最新更新