Scheme 计划中的原子是什么? 可以请人解释或链接我的任何有用的资源(我在谷歌上找不到任何线索),这可以帮助我理解原子是什么。

Scheme 计划中的原子是什么? 可以请人解释或链接我的任何有用的资源(我在谷歌上找不到任何线索),这可以帮助我理解原子是什么。,scheme,Scheme,现在我们考虑一个原子,它不是一对对而不是空的元素。这包括: 数字 弦 象征 布尔人 人物 从《小阴谋家》一书中摘取的以下步骤最能说明这一点: (define atom? (lambda (x) (and (not (pair? x)) (not (null? x))))) 一些作者(麦卡锡和弗里德曼/费莱森等人)使用术语“原子”来指代不是“反对”对的数据。我声称,这些天来,你更有可能将其倒置,并测试“缺点”-罩而不是“原子”-罩。“原子”一词在哪里使用?“原子”不是一个非常有用

现在我们考虑一个原子,它不是一对对而不是空的元素。这包括:

  • 数字
  • 象征
  • 布尔人
  • 人物
从《小阴谋家》一书中摘取的以下步骤最能说明这一点:

(define atom?
  (lambda (x)
    (and (not (pair? x)) (not (null? x)))))

一些作者(麦卡锡和弗里德曼/费莱森等人)使用术语“原子”来指代不是“反对”对的数据。我声称,这些天来,你更有可能将其倒置,并测试“缺点”-罩而不是“原子”-罩。“原子”一词在哪里使用?

“原子”不是一个非常有用的概念。向量是原子吗?我认为它不是,因为它可以包含其他“原子”,就像一对。还有记录类型、SRFI-4向量(向量非常接近字符串,但在概念上仍然由数字组成,即“原子”)等。在小模式的上下文中,它是有意义的,因为它只涉及符号、列表和过程对象(但非常间接)。空列表()被认为是原子?顺便说一句,chicken scheme内置的
(atom?'())
返回true。根据上面的定义no,空列表不是atom。不要在这上面花费太多时间,“atom”概念在现实生活中不是很有用,它更多的是一个学术概念。
atom
来自最初的LISP文章,当时有两种数据类型。它要么是一对犯人,要么是一个符号
nil
是一个符号,所以它是一个原子,但Scheme将布尔值
#f
、符号
nil
和空列表
'()
分开,它可以以任何方式运行,最终都不是一个
原子。在我的Lisp Zozotez中,我用
s
来区分两种类型的符号和配对,并且具有相同的功能。现代方案/CL代码应使用
pair?
/
consp
null?
/
endp