gpt4 book ai didi

common-lisp - 通用 Lisp : concatenate multiple values into vector

转载 作者:行者123 更新时间:2023-12-04 02:55:51 24 4
gpt4 key购买 nike

我需要一个将多个值连接成(简单)向量的函数,类似于 (concatenate ) .但是,与 concatenate 不同,它应该能够处理不是向量或序列的参数。

IE。它应该像这样工作:

(concat #(1 2) 3) => #(1 2 3)
(concat 1 2 3) => #(1 2 3)
(concat 1 #(2 3 4)) => #(1 2 3 4)
(concat #(1 2) 2 #(3 4 5)) => #(1 2 3 4 5)

我怎样才能做到这一点?我想我已经忘记了一些使之成为可能的琐碎的 lisp 构造。

据我所知, concatenate 不能做到。并且我不太确定如何将 make 它与宏一起使用(有 ,@ 构造将列表插入到生成的 lisp 形式中,但我不太确定在这种情况下如何区分非序列和序列)。

最佳答案

reduce另一个回复中的方法是二次方及时。

这是一个 线性 解决方案:

(defun my-concatenate (type &rest args)
(apply #'concatenate type
(mapcar (lambda (a) (if (typep a 'sequence) a (list a)))
args)))

关于common-lisp - 通用 Lisp : concatenate multiple values into vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923467/

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