考虑 SICP 中的这两段:
This construct is called a case analysis, and there is a special form in Lisp for notating such a case analysis. It is called cond (which stands for “conditional”), and it is used as follows:
...
This uses the special form if, a restricted type of conditional that can be used when there are precisely two cases in the case analysis.
类型在此上下文中意味着什么(条件的限制类型)?是否意味着:
- “if”是“cond”的一种类型?因为句子说“有一种特殊形式”,所以只有一种特殊形式,因为“if”是“cond”的一种类型。
- “if”和“cond”都是不相关的。它们都是有条件的。如果这是正确的,为什么这句话说“有一种特殊形式”,就像只有一种一样?
最佳答案
在“ if
[是]条件的受限类型”中,我相信“条件”并不具体意味着cond
;一般来说,它的意思是“条件语句/表达式”。
所以有两个,cond
和 if
。每个都可以根据另一个来定义,因此给定的实现可以选择仅将其中一个作为原语,并根据它来定义另一个;或者实现可以选择将它们都作为原始特殊形式。
特殊形式由解释器(编译器)本身专门处理。
宏也可以用于此目的。那么它们将不会由解释器本身处理,而是由其宏处理机制处理。
所以 if
是一个条件; cond
是一个条件; cond
可以有任意数量的子句; if
必须恰好有两个(或者一个或两个,具体取决于标准)子句;其余的都是英语。 :)
关于scheme - If 和 cond 作为特殊形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51598174/