我想写一个函数,它接受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)))
我不明白我做错了什么。我感谢你的评论。
仅供参考,您可以使用使用地图产品:'(亚历山大:地图产品# '*'(3 4)“(3 5 6))' – coredump