Я хочу написать функцию, которая принимает 2 списка в качестве аргумента и возвращает их умножение в списке. как это:умножая каждый элемент списка с каждым элементом другого списка в lisp
(3 4) (3 5 6) => (9 15 18 12 20 24)
это код, который я придумал, но я получаю ошибку, которая говорит мне, что у меня слишком мало аргументов для карты.
(defun multip (lst lst2)
;this is a function to flatten the result
(defun flatten (tree)
(let ((result '()))
(labels ((scan (item)
(if (listp item)
(map nil #'scan item)
(push item result))))
(scan tree))
(nreverse result)))
(flatten (map (lambda (i) (map (lambda (j) (* i j)) lst)) lst2))
)
(write (multip '(3 4 6) '(3 2)))
Я не могу понять, что я делаю неправильно. Я ценю ваш комментарий.
FYI, вы можете использовать использовать полевую продукт: '(Alexandria: карта-продукта # '*' (3 4)«(3 5 6)) ' – coredump