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

Lisp使用acons添加列表元素到关联表返回格式不符问题

问题原因

acons函数的逻辑是接收key、value、关联列表三个参数,返回新的关联列表,新列表的第一个元素是(key . value)格式的点对。
调用第一段代码时,(car list1)取到的是列表(1 2):

  • (car (car list1))返回的是原子1,符合预期
  • 但(cdr (car list1))返回的是包含单个元素的列表(2),不是原子2

因此acons实际构建的点对是(1 . (2)),而Lisp语法中(1 . (2))和列表(1 2)是完全等价的,所以最终返回结果是((1 2))。
直接调用(acons 1 2 env)时,第二个参数是原子2,所以构建的点对是(1 . 2),返回结果自然就是((1 . 2))。

调整方案

只需要把(cdr (car list1))替换为(cadr (car list1))(等价写法为(car (cdr (car list1)))),即可从(1 2)中取出原子2作为value,调整后的代码如下:
(acons (car (car list1)) (cadr (car list1)) env)
执行后就会返回预期的((1 . 2))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:54:05