scheme - Scheme中的'('() 2 3)和'(() 2 3)有什么区别?
问题描述
我刚刚发现,那:
(null? (car '('() 2 3)))
返回false,并且:
(null? (car '(() 2 3)))
返回true。
这两种格式有什么区别?
解决方案
请记住,这'X
只是两个元素列表的缩写:(quote X)
.
So(car '(() 2 3))
是 的缩写(car (quote (() 2 3)))
,while(car '('() 2 3)))
是 的缩写(car (quote ((quote ()) 2 3)))
。
由于(quote something)
评估为something
,当系统评估(car (quote ((quote ()) 2 3)))
的第一步评估产生:(car ((quote ()) 2 3))
。并且该car
列表的 产生它的第一个元素,即(quote ())
。
所以它不为空,结果为假。
推荐阅读
- python - 在 django 模板中加载 iframe html 标签以显示地图
- javascript - 我的机器人得到这个错误,它的 js 但我不明白为什么我得到这个
- swift - 如何在swift xcode中获取循环的所有迭代到文本字段
- c# - 是否有使用 MVC 架构(asp.net、c#、jquery、ajax)自动保存冗长 Web 表单数据的 API/解决方案
- c# - 对树等的 SOAP 响应
- python-3.x - 如何使用 python docx 或 python pptx 添加自定义箭头
- c++ - 为什么我不能在信号上启动 QThread?
- java - Java Spring WebClient如何从正文响应中获取属性并设置为给定的类?
- webassembly - 如何从 libarchive.js 获取解压缩的文件数据
- ios - SwiftUI 表单中的部分转换