思考以下表达式:
(cond (p1 (some_complex_expression1))
(p2 (some_complex_expression2))
(p3 (some_complex_expression3))
...
(else (some_complex_expressionN)))
是按要求评估的那些(some_complex_expressionX)
吗? (即'(some_complex_expressionX)'仅在其自身之前的谓词pX
为真时)进行评估,或者它们是否遵循应用顺序(在尝试谓词之前,它们会以某种方式进行评估)
如果这是依赖于实现的,那么下面的实现呢?
mit-scheme
guile
racket
that scheme for sicp
r5rs
答案 0 :(得分:4)
测试必须在评估关联表达式之前返回true值。这是由计划标准保证的;例如,请参阅section 4.2.1 of R5RS。
答案 1 :(得分:1)
有关Racket的详细信息,请参阅Reference Manual。对于这个问题,你问的是cond
的语义;那里的文件逐步介绍了在什么条件下评估或未评估的内容。