方案'条件表达和评估顺序

时间:2013-04-18 09:40:35

标签: scheme racket

思考以下表达式:

(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

2 个答案:

答案 0 :(得分:4)

测试必须在评估关联表达式之前返回true值。这是由计划标准保证的;例如,请参阅section 4.2.1 of R5RS

答案 1 :(得分:1)

有关Racket的详细信息,请参阅Reference Manual。对于这个问题,你问的是cond的语义;那里的文件逐步介绍了在什么条件下评估或未评估的内容。