多次元配列の各要素に対して関数を適用した結果を返すmap系関数を作成する場合、 make-arrayに:displaced-toキーワードを指定して作成したベクターに対してmap-intoを使うと簡潔に書けそうです。
(defun map-array! (fn array) (let ((v (make-array (array-total-size array) :displaced-to array))) (map-into v fn v)) array) (asdf:load-system :alexandria) (map-array! #'1+ (alexandria:copy-array #2A((1 2) (3 4)))) ;; => #2A((2 3) (4 5))
以下、初めて知った多次元配列関連の関数
- row-major-aref
- array-row-major-index
0 件のコメント:
コメントを投稿