Я хочу создать функцию в Maxima
, аналогичную ConstantArray в Mathematica
. Итак, я попытался поместить оболочку вокруг make-array
, но make_array(fixnum,2,3,4)
принимает последние аргументы как последовательность параметров, а не список, в то время как если кто-то вызывает ConstantArray(a,b,c,d..)
с переменным количеством аргументов, я не могу передать его в make-массив, не помещая все это как список.
Чтобы обойти проблему извлечения элементов из списка, переданного в качестве параметра, и добавления функции 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 (фиксированное число, 1,2,3,5,3)
Эта функция выполняется хорошо, если я скопирую этот вывод, вставлю его в консоль и запущу, так как он возвращает мне Lisp array [1,2,3,5,3]
.
Я пытался оценить его, используя ''%
и ev(constantarray(1,2,3,5,3),nouns)
и т. д., но он просто не работает. Я хочу знать, знает ли кто-нибудь, как заставить эту оценку или я делаю что-то невозможное.