gpt4 book ai didi

arrays - 你如何在普通的 lisp 中复制一个数组?

转载 作者:行者123 更新时间:2023-12-04 02:59:34 27 4
gpt4 key购买 nike

我想复制我的 2D 数组,这感觉就像处理数组的不错的、功能性的、非破坏性的方式。这样做的 lispy 方式是什么?

最佳答案

更新:如今,alexandria有一个 copy-array非常类似于下面给出的实现。用那个。

过时的答案:我使用了以下内容,我认为它比当时的 alexandria 版本更好:

(defun copy-array (array &key
(element-type (array-element-type array))
(fill-pointer (and (array-has-fill-pointer-p array)
(fill-pointer array)))
(adjustable (adjustable-array-p array)))
"Returns an undisplaced copy of ARRAY, with same fill-pointer and
adjustability (if any) as the original, unless overridden by the keyword
arguments."
(let* ((dimensions (array-dimensions array))
(new-array (make-array dimensions
:element-type element-type
:adjustable adjustable
:fill-pointer fill-pointer)))
(dotimes (i (array-total-size array))
(setf (row-major-aref new-array i)
(row-major-aref array i)))
new-array))

亚历山大版本的问题在于 adjust-arrayhack 导致结果(至少在 SBCL 上)永远不会是 simple-array ,这是其他一些库(例如 opticl)所期望的。该
以上版本对我来说也更快。

其他人以不同的方式发布了非常相似的版本
图书馆,但我忘记了人和图书馆的名字。

关于arrays - 你如何在普通的 lisp 中复制一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com