1

思考如下表达式:

(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
4

2 回答 2

4

在评估关联的表达式之前,测试必须返回一个真值。这是由计划标准保证的;例如,参见R5RS 的第 4.2.1 节

于 2013-04-18T09:57:08.983 回答
1

有关 Racket 的详细信息,请参阅参考手册。对于这个问题,您是在询问 ; 的语义cond。那里的文档详细介绍了在什么条件下评估或不评估的内容。

于 2013-04-18T17:05:22.070 回答