【发布时间】:2018-07-30 16:13:05
【问题描述】:
考虑SICP的这两段:
这种构造称为案例分析,有一种特殊的形式 在 Lisp 中记录了这样的案例分析。它被称为 cond (其中 代表“条件”),用法如下:
...
这使用特殊形式 if ,这是一种受限的条件类型 案例分析中恰好有两个案例时可以使用。
在这种情况下类型是什么意思(条件的限制类型)?是什么意思:
- “if”是一种“cond”?因为句子陈述了“有一种特殊形式”,所以只有一种特殊形式,因为“if”是“cond”的一种。
- “if”和“cond”都不相关。它们都是有条件的。如果这是正确的,为什么这句话说“有一个特殊的形式”就像它只有一个一样?
【问题讨论】:
-
有一种特殊的形式用于一般案例分析,支持多种案例——它被称为 COND。当只有两种情况时,有一个更简单的特殊形式:IF。
-
@Rainer Joswig 谢谢。这有点跑题了。关于你所说的如果。 “只有两种情况:” - 但为什么 (if (> 2 3) #t) 有效?这只是一种情况? (if ( 2 3) #t) 什么也不返回。
-
在一些早期的方案中,没有否定子句的 IF 不是基本语法。一般在 Scheme 中,如果值为 false 且未提供第二个子句,则 IF 表达式的值未指定。这意味着在 Scheme 中它通常会返回一些东西,但它返回的内容是未指定的。在 Common Lisp 中,它被指定返回 NIL。