You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lisp中如何构造(key . (list of values))形式的点对结构?

Lisp点对列表(key . (list of values))构造说明

完全可以实现你需要的(a . (b c))结构,你构造出反向的((a b) . c)本质是cons函数的参数顺序写反了。

Lisp中点对(cons cell)的构造规则非常明确:

  • cons函数接收两个参数,第一个参数会成为点对的car(也就是点号.前面的元素),第二个参数会成为点对的cdr(也就是点号.后面的元素)
  • 你需要的(a . (b c))其实就是Lisp里最普通的标准列表(a b c)——标准列表的底层存储就是嵌套的点对,最后一个点对的cdr为空列表nil,(a . (b c))是这个结构的完全展开写法,平时REPL默认会把这种结构简写为(a b c),二者完全等价。

构造示例

;; 正确构造目标结构,car为原子a,cdr为列表(b c)
(cons 'a '(b c))
;; 底层存储结构就是(a . (b c)),REPL默认打印为(A B C)

;; 你当前错误写法:car为列表(a b),cdr为原子c,得到反向错误结构
(cons '(a b) 'c)
;; 打印结果为((A B) . C)

如果需要让REPL显式打印出带点号的完整展开形式,而非列表简写,可以打开对应Lisp实现的点对打印开关:比如Common Lisp中执行(setf *print-pretty* nil)后再输出结构,就能看到显式的点对表示。

内容的提问来源于stack exchange,提问作者Void

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:24:28