在 Maxima 中声明一个动态常量
Declare a dynamic constant in 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
评估其参数,因此参数在函数看到它们时评估。
quote-quote ''var
在函数中没有预期的效果,因为 quote-quote 仅在解析表达式时应用。因此,以后对 var
的任何赋值都无效。
我反对 eval_string
。几乎总是有比字符串处理更好的方法来做任何事情;在这种情况下,更好的方法是 apply
.
我需要声明一个变量为常量,这个变量是在程序运行时生成的运行,我试过这样:
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
评估其参数,因此参数在函数看到它们时评估。
quote-quote ''var
在函数中没有预期的效果,因为 quote-quote 仅在解析表达式时应用。因此,以后对 var
的任何赋值都无效。
我反对 eval_string
。几乎总是有比字符串处理更好的方法来做任何事情;在这种情况下,更好的方法是 apply
.