gpt4 book ai didi

lisp - 非破坏性子序列——lisp 除外

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:16 26 4
gpt4 key购买 nike

我知道 lisp 中的 subseq 返回一个范围内的子序列。除了那个范围之外,有什么东西会返回子序列并且应该是非破坏性的吗?感谢您的帮助。

最佳答案

您可以使用 concatenatesubseq 对任何序列执行此操作:

(defun sequence-except (sequence start end)
(concatenate (sequence-type sequence)
(subseq sequence 0 start)
(subseq sequence end)))

以下应该足以确定位向量、字符串等的输入序列的类型:

(defun sequence-type (sequence)
(etypecase sequence
(list 'list)
(array `(array ,(array-element-type sequence) (*)))))

测试:

(loop for test in (list
#*10101001
"abcd"
'(0 3 2)
nil
#(1 2 3 4)
(make-array 4
:adjustable t
:fill-pointer T
:initial-contents
'(a b c d)))
collect (concatenate (sequence-type test) test))

关于lisp - 非破坏性子序列——lisp 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555638/

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