我想使用块命令显示数字1到5的平方:
expr : 10*i;
myList (expr, iMin, iMax) := block(
local(expr),
print(expr),
print(''expr),
print( makelist(expr, i, iMin, iMax)),
print( makelist(''expr, i, iMin, iMax))
)$
ai : i^2$
myList (ai,1,5);
以下是我使用此代码获得的内容:
i^2
10*i
[i^2,i^2,i^2,i^2,i^2]
[10,20,30,40,50]
为什么" expr" myList中的变量(带引号)不是变量" ai"?
答案 0 :(得分:0)
简短的回答是,quote-quote仅在表达式输入时应用,而不是在计算表达式时应用。请尝试grind(myList);
查看引用引号已将expr
的当前值插入(粘贴)到函数定义中。
更长的答案是Maxima通常有一次性评估策略(即变量只评估一次),但有些函数“引用”(不评估)他们的参数或以一种特殊的方式评估他们的参数,{ {1}}就是其中之一。这使得编写像makelist
这样想要为myList
提供参数的函数变得棘手。
我的建议是写makelist
(即将apply(makelist, [...])
应用于参数列表)而不是makelist
。用makelist(...)
编写它将确保评估参数。
apply