Compilation 编译带有警告的全局变量

Compilation 编译带有警告的全局变量,compilation,undefined,warnings,maxima,declare,Compilation,Undefined,Warnings,Maxima,Declare,使用命令编译文件后: compile_file("filename.mac"); 我在filename.UNLISP中收到一个警告: 警告:翻译中遇到未定义的变量foo 文档中说要使用该功能: define_variable (name, default_value, *mode*); 但是,如果在*模式*中,我写的不是“任何”,例如: define_variable(foo, false, boolean)$ 然后我在重新编译时得到错误: #无法以可读的方式打印 是否

使用命令编译文件后:

compile_file("filename.mac");
我在filename.UNLISP中收到一个警告

警告:翻译中遇到未定义的变量foo

文档中说要使用该功能:

define_variable (name, default_value, *mode*);
但是,如果在*模式*中,我写的不是“任何”,例如:

define_variable(foo, false, boolean)$
然后我在重新编译时得到错误:

#无法以可读的方式打印

是否可以声明一个变量,以便在没有此警告的情况下编译成功?使用模式_declare,declare

示例代码filename.mac

define_variable(foo, true, boolean)$ /* useless string */
foo: true$

exprp(that) := if foo = false and listp(that) and not emptyp(that) and member(that[1], ["+", "*"]) then(foo: true, true)$
matchdeclare(exprm, exprp)$
defrule(rule_1, exprm, subst(exprm[1], "[", exprm[2]))$

calc(list) := block([steps: []],
while foo do(
    steps: endcons(list, steps),
    foo: false,
    list: applyb1(list, rule_1)
),
steps
)$

calc(["+", [["*", [1, 2, 3]], ["+", [3, 4, 6]]]]);

不确定错误的确切来源,但无论如何,编译Maxima代码根本没有必要;您可以只使用解释版本。也许你可以说更多关于你正在做的事情。你能发布
filename.mac
的内容吗?它将帮助我们修复这个bug。感谢您的帮助。添加了filename.mac。真正的代码负载更大,与web服务器计算相关。错误本身并不严重,但它不允许从share\maxima\5.4**\src编译一些非常慢的文件。感谢您开发MaximaThanks来发布该文件。我可以看出问题在于Maxima试图将函数打印到Lisp翻译中。一两天内我都无法修好它。同时,我的建议是省略对
define_variable
的调用,然后尝试编译该函数。我已经修复了您在Maxima Git的commit 3404e9d中遇到的错误。如果您需要有关如何修复bug的帮助,可以让我知道。如果您习惯于Git和make,那么这是很简单的;你可以告诉我你的立场。