merge - 关于 Common Lisp 中的 MERGE 函数

标签 merge common-lisp

merge函数的逻辑是什么?

不是说如果判断返回true,则选择list1中的第一个元素,否则,则选择list2吗?

我被下面两句话搞糊涂了...

(合并'列表'(1)'(2)#'<)==>(1 2)

(合并'列表'(1)'(2)#'=)==>(1 2)

为什么他们得到相同的结果?

最佳答案

合并的结果包含两个序列的所有元素。

如果谓词是 T,则第一个元素放在前面。

CL-USER 57 > (merge 'list
                    (list 1 2)
                    (list 2 1)
                    #'<)
(1 2 2 1)

CL-USER 58 > (merge 'list
                    (list 1 2)
                    (list 2 1)
                    #'=)
(1 2 2 1)

CL-USER 59 > (merge 'list
                    (list 1 2)
                    (list 2 1)
                    #'>)
(2 1 2 1)

合并的基本用例:合并两个排序序列将生成一个包含所有元素的排序序列。

CL-USER 63 > (merge 'list
                    '(1 2 6)
                    '(3 4 5)
                    #'<)
(1 2 3 4 5 6)

也适用于矢量:

CL-USER 64 > (merge 'vector
                    #(1 2 6)
                    #(3 4 5)
                    #'<)
#(1 2 3 4 5 6)

关于merge - 关于 Common Lisp 中的 MERGE 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27201890/

相关文章:

python - 将数组列表合并为一个数组列表

installation - 如何使用Portacle IDE在Common Lisp中实现Common Music?

macros - 为什么这个 common lisp 宏不计算第一个 s-exp ?

Lisp 风格 : setq vs. setf

r - 快速连接data.table(潜在bug,上报前检查)

svn - 合并 Subversion 分支时保留历史记录

javascript - 仅将两个数组合并为公共(public)值

git merge : filter files to avoid silly conflicts (like whitespace or case changes)

Common-Lisp:绑定(bind)形式参数,到底传递了什么?

引用 cons 单元格