【发布时间】:2015-04-21 10:00:49
【问题描述】:
我在Google Common Lisp Style Guide(见最后一节)中读到,Common Lisp 标准中关于and 作为类型说明符的错误。也就是说,它不会“短路”,或者等同于不能保证评估顺序,这与example 中的假设相反:
(and integer (satisfies evenp))
但是,查看 CLtL2 的 section 4.4,它表示
当
typep处理and类型说明符时,它总是按从左到右的顺序测试每个组件类型,并在找到所讨论对象的交集的一个组件后立即停止处理不属于。
该部分进一步解释了这样做,正是为了允许satisfies被另一种类型过滤,以避免错误。
我可以安全地认为这是 Google 样式指南中的一个错误,还是自 CLtL2 以来行为发生了变化?
【问题讨论】:
标签: types lisp common-lisp cltl2