首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方案: car和cdr

方案: car和cdr
EN

Stack Overflow用户
提问于 2018-04-12 21:33:13
回答 1查看 183关注 0票数 1

我正在读这本书:e.html

我被困在这个练习上了:

代码语言:javascript
复制
(car '((1 2 3) (4 5 6)))

事情是,根据我的理解,我必须理解我们如何得到((12,3) (4,5,6)得到(car‘((12,3) (4,5,6)),因为car评估了第一个地址。

我试过几次,但无法得到确切的“字符串”(我甚至不知道如何调用它们):

代码语言:javascript
复制
(cons (cons 1 (cons 2 (cons 3 '()))) (cons 4 (cons 5 (cons 6 '())))) 

给我

代码语言:javascript
复制
{{1 2 3} 4 5 6}

(cons (cons (cons 1 (cons 2 (cons 3 '()))) '()) (cons 4 (cons 5 (cons 6 '()))))

给我

代码语言:javascript
复制
{{{1 2 3}} 4 5 6}

(cons (cons (cons 1 (cons 2 (cons 3 '()))) '()) (cons (cons 4 (cons 5 (cons 6 '()))) '()))

给我

代码语言:javascript
复制
{{{1 2 3}} {4 5 6}}

至少我得到了两个部分的支架..。

问题是,如果每次我打电话给car以获得第一个地址,我需要在脑海中列出结果,才能看到山的另一边,这对me...so来说似乎是一种非常困难的语言--我希望我错了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-12 21:49:12

'((1 2 3) (4 5 6))(cons (cons 1 (cons 2 (cons 3 '()))) (cons (cons 4 (cons 5 (cons 6 '()))) '()))

代码语言:javascript
复制
> (cons (cons 1 (cons 2 (cons 3 '()))) (cons (cons 4 (cons 5 (cons 6 '()))) '()))
'((1 2 3) (4 5 6))

如果我们用符号替换内部列表,因为它们的值并不重要,那么我们可以得到:

代码语言:javascript
复制
(car '((1 2 3) (4 5 6)))
(car '(X Y))
(car (cons 'X (cons 'Y '())))

通过还原(car (cons A B)) => A生成'X,所以结果是(cons 1 (cons 2 (cons 3 '())))还是'(1 2 3)

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

https://stackoverflow.com/questions/49806212

复制
相关文章

相似问题

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