lisp - 我在使用 cons 单元格时遇到问题,我对 lisp 程序中的元素有疑问
问题描述
((one) for all (and (two (for me))))
此列表中有多少个元素?书上说4,但我就是看不到。顺便说一句,这是 Common Lisp。
解决方案
在列表中((one) for all (and (two (for me))))
,有四个元素:列表(one)
、符号for
、符号all
和列表(and (two (for me)))
。
当你有这样的问题时,在 REPL 上做实验会很有帮助:
CL-USER> (setf my-list '())
NIL
CL-USER> (length my-list)
0
我们创建了空列表my-list
,并检查了它的长度。
CL-USER> (setf my-sublist '(and (two (for me))))
(AND (TWO (FOR ME)))
CL-USER> (length my-sublist)
2
我们创建了另一个列表,my-sublist
. 请注意,此列表包含符号and
和列表(two (for me))
。length
验证返回的结果my-sublist
包含两个元素(一个符号和一个列表)。
CL-USER> (setf my-list (cons my-sublist my-list))
((AND (TWO (FOR ME))))
CL-USER> (length my-list)
1
我们已经cons
编辑my-sublist
了my-list
, 来创建一个包含一个元素的列表,即 list (and (two (for me)))
。请注意,列表my-sublist
,即列表(and (two (for me)))
包含两个元素,但列表my-list
——目前((and (two (for me))))
——仅包含一个元素,即列表my-sublist
。
CL-USER> (setf my-list (cons 'all my-list))
(ALL (AND (TWO (FOR ME))))
CL-USER> (length my-list)
2
CL-USER> (setf my-list (cons 'for my-list))
(FOR ALL (AND (TWO (FOR ME))))
CL-USER> (length my-list)
3
CL-USER> (setf my-list (cons '(one) my-list))
((ONE) FOR ALL (AND (TWO (FOR ME))))
CL-USER> (length my-list)
4
我们添加了剩余的三个元素(符号all
和for
,以及列表(one)
。结果是一个包含四个元素的列表,正如预期的那样。
推荐阅读
- node.js - 反应原生'无法在项目中找到博览会
- reactjs - 带有 react-beautiful-dnd 的 React Bootstrap 下拉菜单
- event-handling - 逻辑编程中的事件驱动编程范式
- docker - Docker 容器退出状态
- xamarin.forms - 如何在自动化脚本中验证 Firebase 分析事件?
- javascript - 测试文件时遇到错误
- go - 如何仅在 BD 中更新我的结构中填写的字段?
- pandas - 在列表理解中将行附加到 pandas 数据框,而不会丢失先前的附加
- wordpress - 在 WooCommerce 管理订单编辑页面中显示自定义 DOB 字段
- reactjs - Ant Design 无法更新动态表单项的初始值