首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“小阴谋家”中“商”的歧义。什么时候应该用引语来表达,什么时候不应该呢?

“小阴谋家”中“商”的歧义。什么时候应该用引语来表达,什么时候不应该呢?
EN

Stack Overflow用户
提问于 2021-12-11 19:00:46
回答 1查看 51关注 0票数 0

弗里德曼和费莱森的“小阴谋家4e”从定义atom?开始

代码语言:javascript
复制
(define atom?
    (lambda (x)
        (and (not (pair? x)) (not (null? x)))))

然后,在第一章中,有问题问是否是原子,是否是原子。例如(为了清楚起见,对脚注作了修改):

,这是一个原子,是真的吗?

atom*

*在计划中:(quote atom)'atom

它说turkey1492u*abc$也是原子。

除了1492之外,所有这些都必须前面有一个',否则我们就得到一个Error: execute: unbound symbol:

1492'1492都能工作。从今以后,在这本书中,我如何知道什么时候应该或不应该引用(')?这很让人困惑。我希望作者能清楚地引用这些引语-在表达式前面加上一个单引号(')真的会增加那么多的视觉噪音吗?我是否应该假设一切都在引号(')之前?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-11 21:21:22

原子。原子是一个不可分割的东西。像1372这样的值是不可分割的,它是一个单一的值。还有其他原子,像"hello"这样的字符串,像xy这样的变量,像:keyword'something这样的值。

在写Lisp时,原子用空格或括号分隔。然后,我们可以通过在圆括号中插入原子来创建一个或多个form,例如(* 2 (+ 1 3))。这里的原子是:

  • 运算符+和*
  • 值1、2和3
  • forms (+ 13)和(* 2.)

然后就出现了几个问题。首先,对于x,我们是指原子'x,一个名为x的变量,还是存储在变量x中的值?Lisp假设x是一个变量,所以输入x返回x的值,或者产生一个x未绑定的错误。在x前面加上一个单引号,就像'x说的,“请不要试图对此进行评估”。

表单具有一致的格式(operator data1 data2 data3 ...)。但是,如果您只想提供数据,会发生什么呢?你用什么接线员?答案是使用操作符quote,它只计算表单为数据。因为总是说引号是烦人的,Lisp允许您使用'(data1 data2 data3 ...)代替。

至于'1492,这与Scheme和Common中的1492相同。这些值是可互换的。我会使用1492,因为引用是多余的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70318171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档