首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通用Lisp中用‘Lisp’表示“满意”

在通用Lisp中用‘Lisp’表示“满意”
EN

Stack Overflow用户
提问于 2015-04-21 10:00:49
回答 1查看 321关注 0票数 10

我在谷歌通用Lisp风格指南 (参见最后一节)中看到,在通用Lisp标准中,将and作为类型说明符是错误的。也就是说,它没有“短路”,或者等效地说,评估顺序没有得到保证,这与示例中假设的情况相反。

代码语言:javascript
复制
(and integer (satisfies evenp))

然而,看看第4.4节 of CLtL2,有人说

typep处理and类型说明符时,它总是按照从左到右的顺序对每个组件类型进行测试,并在找到所讨论对象不属于的交集的一个组件时立即停止处理。

本节进一步解释说,这样做恰恰是为了允许satisfies被另一种类型过滤,以避免错误。

我是否可以有把握地假设这是谷歌风格指南中的一个错误,或者自CLtL2以来的行为是否发生了变化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 11:08:22

几年前我也遇到过同样的问题。

我在ANSI CL中没有发现支持订单或过滤的任何内容。但是,也没有任何问题来讨论改变。您提到的示例假定是CLtL2解释。

因此,假设编译器可以重新排序类型,并且这与CLtL2不同,这是有意义的。

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

https://stackoverflow.com/questions/29768959

复制
相关文章

相似问题

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