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