我很难理解Racket中的and
+ cond
功能。为什么以下两个功能彼此不同?
功能a:
(define (test? function)
(and (list? function) (>= (length function) 1)))
功能b:
(define (test?function )
(cond [(and (list? function))
(>= (length function) 1) ]))
据我所知,这基本上是指,
(if (list? function)
返回true;(if (>= (length function) 1)
返回true; 与功能a几乎相同。我的理解错了吗?
我无法理解它们之间的区别。请解释。是否无法用cond
/ if
编写功能a?
我在Racket中很难理解,并且+ cond函数。为什么以下两个功能彼此不同?函数a:(定义(测试?函数)(和(列表?函数)(> = ...
首先,cond
和and
不是函数,它们是“特殊形式”(实现为宏)。 cond
表达式的语法与函数调用的语法不同。 and
表达式的语法与函数调用的语法相同,但是and
不一定要求值其所有参数。