Scheme “的概念是什么?”;第三个“;在本原函数方案中?

Scheme “的概念是什么?”;第三个“;在本原函数方案中?,scheme,primitive,Scheme,Primitive,我对方案计算是新手 我有一个问题: (定义(第三个C)(CAR(CDR CDR(C))) (三)(A(B C)(D E)F) 我知道CDR和CAR的概念,但我不明白“第三方”会做什么。我读到这是定义“三人行”的一种方式 我倾向于用第三条语句旁边的第二条语句的值来代替C的值,这是正确的吗 您能否尽可能简单地解释一下“第三方”在这个给定的问题中的作用,以及我如何解决这个给定的问题?在lisps中,列表是一个基本的数据结构,它由对组成。传统上,该对中的第一个成员称为其car,第二个成员称为其cdr:

我对方案计算是新手

我有一个问题:

(定义(第三个C)(CAR(CDR CDR(C)))

(三)(A(B C)(D E)F)

我知道CDR和CAR的概念,但我不明白“第三方”会做什么。我读到这是定义“三人行”的一种方式

我倾向于用第三条语句旁边的第二条语句的值来代替C的值,这是正确的吗


您能否尽可能简单地解释一下“第三方”在这个给定的问题中的作用,以及我如何解决这个给定的问题?

在lisps中,列表是一个基本的数据结构,它由对组成。传统上,该对中的第一个成员称为其car,第二个成员称为其cdr:

(car.cdr)

这里的点表示该对由两个单元格组成。给定一对,
(a.b)
,第一个成员的存取器也称为
car
,第二个成员的存取器称为
cdr
。因此:

(汽车(a.b))
-->
a
,和
(cdr'(a.b))
-->
b

为了形成一个列表,对按以下方式组合:第一对的第一个成员是列表的第一个元素,第一对的第二个成员是空列表或代表列表其余部分的一对。因此,一个元素的列表,例如,
(a)
由对
(a()
表示

两个元素的列表,例如,
(A b)
由一对
(A.(b)()
表示。这里,第一对的第二个成员是对
(b.()
。您将注意到,列表
(a b)
cdr
是列表
(b)
,或等效的
(b()

三个元素的列表,例如,
(abc)
类似地表示为
(A.(b.(c)))
。列表是一对空列表
()
或其
cdr
中有一对。这里需要区分正确的列表(最后一对必须在其
cdr
中有
()
)和不正确的列表,但我将在这里忽略这一区别。空列表也是一个列表(但不是一对)。更精确一点:在Scheme中,列表要么是空列表,要么是cdr为列表的对

因此,
car
获取列表的第一个成员,
cdr
获取列表的其余部分。根据列表
(a b c d)
,我们可以看到:

(cdr'(a b c d))
-->
(b c d)
,和
(cdr(cdr(abcd)))
-->
(cdr(bbcd))
-->
(cd)
,和
(car(cdr(cdr)(abc-d)))
-->-->(car(cdr)(bbc-d)))-->
-->(car(cd))
-->
c

因此,根据定义:

(定义(第三个X)
(汽车cdr(cdr xs)))
我们有:

>(第三(a、b、c、d))
C
我将由OP将此信息应用于以下问题:

(第三个“(a(b c)(d e)f))
-->


在lisps中,列表是一种基本的数据结构,由对组成。传统上,该对中的第一个成员称为其car,第二个成员称为其cdr:

(car.cdr)

这里的点表示该对由两个单元格组成。给定一对,
(a.b)
,第一个成员的存取器也称为
car
,第二个成员的存取器称为
cdr
。因此:

(汽车(a.b))
-->
a
,和
(cdr'(a.b))
-->
b

为了形成一个列表,对按以下方式组合:第一对的第一个成员是列表的第一个元素,第一对的第二个成员是空列表或代表列表其余部分的一对。因此,一个元素的列表,例如,
(a)
由对
(a()
表示

两个元素的列表,例如,
(A b)
由一对
(A.(b)()
表示。这里,第一对的第二个成员是对
(b.()
。您将注意到,列表
(a b)
cdr
是列表
(b)
,或等效的
(b()

三个元素的列表,例如,
(abc)
类似地表示为
(A.(b.(c)))
。列表是一对空列表
()
或其
cdr
中有一对。这里需要区分正确的列表(最后一对必须在其
cdr
中有
()
)和不正确的列表,但我将在这里忽略这一区别。空列表也是一个列表(但不是一对)。更精确一点:在Scheme中,列表要么是空列表,要么是cdr为列表的对

因此,
car
获取列表的第一个成员,
cdr
获取列表的其余部分。根据列表
(a b c d)
,我们可以看到:

(cdr'(a b c d))
-->
(b c d)
,和
(cdr(cdr(abcd)))
-->
(cdr(bbcd))
-->
(cd)
,和
(car(cdr(cdr)(abc-d)))
-->-->(car(cdr)(bbc-d)))-->
-->(car(cd))
-->
c

因此,根据定义:

(定义(第三个X)
(汽车cdr(cdr xs)))
我们有:

>(第三(a、b、c、d))
C
我将由OP将此信息应用于以下问题:

(第三个“(a(b c)(d e)f))
-->


它返回列表的第三个元素。。。你没有试过吗?虽然
third
的实现是无效的,但是那些内置到方案实现中的实现,比如racket或者像SRFI这样的库中-