【发布时间】:2023-03-23 21:12:01
【问题描述】:
我想在Maxima 中创建一个类似于Mathematica 中的ConstantArray 的函数。因此,我尝试在make-array 周围放置一个包装器,但make_array(fixnum,2,3,4) 将最后一个参数作为参数序列而不是列表,而如果有人使用可变数量的参数调用ConstantArray(a,b,c,d..),则我无法将其传递给make-array而不放置它全部作为列表。
为了解决从作为参数传递的列表中提取元素并放入make-array函数的问题,我尝试了,
constantarray((l)):=block([eq:'make_array(fixnum)],
map(lambda([x],eq:endcons(x,eq)),l),eq);
调用哪个
constantarray([1,2,3,5,3]);
返回
make_array(fixnum,1,2,3,5,3)
如果我复制此输出,将其粘贴到控制台并运行它,则此函数执行良好,因为它返回给我Lisp array [1,2,3,5,3]。
我曾尝试使用''% 和ev(constantarray(1,2,3,5,3),nouns) 等对其进行评估,但它只是不起作用。我想知道是否有人知道如何强制执行此评估,或者我正在做一些不可能的事情。
【问题讨论】:
标签: lisp common-lisp maxima computer-algebra-systems