明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 118|回复: 0

[经验] 'list 是个啥

[复制链接]
发表于 10 小时前 | 显示全部楼层 |阅读模式
本帖最后由 aws 于 2025-2-22 10:56 编辑

假设
(setq lst '((1 2 3)(4 5 6)(7 8 9)))
那么
(cons 'list lst)返回是个啥?
我原本以为返回的是
('list(1 2 3)(4 5 6)(7 8 9))
但实际上打印出来的是
(list(1 2 3)(4 5 6)(7 8 9))
为什么单引号没了?很奇怪,而且list不是函数吗,怎么会被打印出来?
这里纠结了很久,后来

(defun c:gg()
        (print(type list))
        (print(type 'list))
        (print(type "list"))
        (print(type 3.14))
        (print(type 10))
        (princ)
)
命令: GG
SUBR
SYM
STR
REAL
INT

直到我用这个函数去测试,发现了一个特殊的数据类型sym(Symbol
),这个数据类型意思是符号。它既不是函数,也不是字符串,就是符号。
尽管它和函数长得很像,但它是一个独立的数据类型,mapcar 这个函数,后面跟着的就是符号或自定义函数
如此一来,便可理解了(cons 'list lst)这句代码
也便理解了列表转置
(apply 'mapcar(cons 'list lst))
至于为什么打印出来,引号消失了,就当作是隐藏了吧,本质上还是符号

说起来,我之前一直没找到列表转置的使用场景,结果今天刚好写个代码,需要用到它,便有了此贴





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +2 金钱 +10 收起 理由
kucha007 + 1 神马都是浮云
hhh454 + 1 + 10 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 21:34 , Processed in 0.179556 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表