我想寫一個函數,它接受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