有没有办法强制代码在maxima块中运行?

时间:2020-05-11 08:31:53

标签: maxima wxmaxima

我正在尝试评估Maxima块中的某些代码,但似乎无法正常工作。 如果我想要某种形式的

block( load("my_file.mac"), do_stuff )

它似乎没有加载文件。我想通过以下方式定义该文件中我唯一需要的东西来规避这个问题

block( "implies"(p, q) := not p or q, infix("implies"), expr: p implies q, do_other_stuff)

但是,再次出现一个错误,暗示不是infix运算符。我认为这是因为loadinfix都具有返回值(在我的情况下分别为doneimplies),以某种方式破坏了该块。

绝对有必要将整个Maxima代码都包含在一个块中。所以虽然两者

load("my_file.mac"); block(do_stuff)

"implies"(p, q) := not p or q; infix("implies"); block(expr: p implies q, do_other_stuff)

工作。这不是我的选择。

1 个答案:

答案 0 :(得分:1)

对所有块进行分析,然后对其求值。因此,如果该块显示类似

block (load ("my_file.mac"), p implies q);

然后必须在解析该块之前定义“隐式”-不能在该块内定义。

请注意,运算符定义在Maxima中是全局的。如果您写block(infix("implies"), ...),则“ implies”仍然是全局定义;它不限于定义它的块。

也许您可以说说更多有关您要实现的目标。