在球拍中具有`cond`和`and`的函数

问题描述 投票:1回答:1

我很难理解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:(定义(测试?函数)(和(列表?函数)(> = ...

function conditional-statements racket
1个回答
4
投票

首先,condand不是函数,它们是“特殊形式”(实现为宏)。 cond表达式的语法与函数调用的语法不同。 and表达式的语法与函数调用的语法相同,但是and不一定要求值其所有参数。

© www.soinside.com 2019 - 2024. All rights reserved.