common-lisp - Common Lisp 中的 cell 和 cons cell 是否相同?以及如何访问单元格的内容?
问题描述
我是编程和 CL 的新手。我试图理解细胞的概念。我有时会在 SO 问题和其他地方看到这两个术语:cell 和 cons cell。它们是一回事吗?还是他们不同?
有人让我将单元格作为指针(在 C 中),但由于对 C 语言一无所知,我面临两个问题而不是一个。理解指针,然后理解单元格。
所以我的问题是:细胞是某种容器吗?是否可以命名一个空容器,然后在其中放入一些(新)值?如果是,nil 和 '() 的处理方式相同还是不同?
例如:
(defvar *empty-cell-1* nil)
(defvar *empty-cell-2* '())
现在分配:
(defvar *first-cell* *empty-cell-1*)
(defvar *second-cell* *empty-cell-2*)
现在我尝试为两者分配一个值
(setf *first-cell* 0)
(setf *second-cell* 0)
如果我理解正确,两个单元格名称都会获得相同的值。但是,有没有办法将某些东西作为“内容”放入单元格中?类似的东西,这将使第二个单元格类似于 '(0) 而不使用 list 语句?还是单个元素列表等效于单个单元格(作为容器)及其内容(作为分配值)?
我的基本困惑是,如何区分容器和单元格的内容,而不是列表。还是我理解单元格的方法不适合 common-lisp?
解决方案
推荐阅读
- php - 如何在 PowerShell 中进行 php-serialize 和 base64_encode?
- r - 分解时间序列数据:“不超过 2 个周期”
- c++ - 使用涉及地图的比较器对项目向量进行排序
- regex - Texmaker 中查找和替换中的正则表达式
- tfs - TFS 中缺少编辑器首选项
- list - haskell如何检查两个元组列表是否相等并采取联合
- python - 将边界应用于 Scipy Optimize Curvefit
- android - 在 asynytask 中完成活动意图
- google-apps-script - 从 Drive.Files.list 获取新的 Google Site Published URL
- html - CSS,outline-offset:分别设置每边的偏移量