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、あなたが使用マップ-製品を使用することができます '(アレクサンドリア:マップ-製品# '*'(3 4)「(3 5 6))' – coredump