热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

计划解释中的缺点

如何解决《计划解释中的缺点》经验,为你挑选了1个好方法。

(cons 1 2)给了我们(1 . 2).

(cons 3 4)给了我们(3 . 4).

那么为什么(cons (cons 1 2) (cons 3 4))要给我们((1 . 2) 3 . 4)?为什么不呢((1 . 2) (3 . 4))



1> Alexis King..:

好吧,这不会是((1 . 2) (3 . 4))因为那将是一个包含两个元素的列表,每个元素都是一个缺点.我猜你的意思是:为什么不呢((1 . 2) . (3 . 4))

嗯,实际上以下两个表达式是等价的:

'((1 . 2) . (3 . 4))
'((1 . 2) 3 . 4)

这与Scheme的点分符号如何与其正确列表的表示一起工作有关.记住这个:

'(1 . (2 . (3 . (4 . ()))))

...将简单地打印为:

(1 2 3 4)

但是,这个:

'(1 . (2 . (3 . 4)))

...会像这样打印:

(1 2 3 . 4)

请注意,Scheme会尝试使用简化的列表表示法,只要它可以 - 只有当它到达一对没有一对或空列表作为其cdr元素的对时,它才会回退到显式点.

因此,在您的原始示例中,该cons对的第二个元素一对,因此Scheme使用列表表示法.这使得它可以删除第二组括号和额外的点,从而产生您遇到的结果.


推荐阅读
author-avatar
Robin Lu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有