Function 在球拍中与'cond'和'and'一起使用
我很难理解球拍中的Function 在球拍中与'cond'和'and'一起使用,function,conditional-statements,racket,Function,Conditional Statements,Racket,我很难理解球拍中的和+cond功能。为什么以下两个功能彼此不同 职能a: 职能b: 在我的理解中,这基本上意味着 (if(list?函数)返回true (如果(>=(长度函数)1)返回true 这和函数a差不多。我的理解有错吗 我不明白它们之间有什么不同。请解释一下。如果,,,的话,用cond写函数a不可能吗?首先,cond和和不是函数,它们是“特殊形式”(作为宏实现)。cond表达式的语法与函数调用的语法不同。和表达式的语法与函数调用的语法相同,但和不一定计算其所有参数 这里有一种使用co
和+cond
功能。为什么以下两个功能彼此不同
职能a:
职能b:
在我的理解中,这基本上意味着
(if(list?函数)
返回true
(如果(>=(长度函数)1)
返回true
这和函数a差不多。我的理解有错吗
我不明白它们之间有什么不同。请解释一下。如果
,,,的话,用cond
写函数a不可能吗?首先,cond
和和不是函数,它们是“特殊形式”(作为宏实现)。cond
表达式的语法与函数调用的语法不同。和
表达式的语法与函数调用的语法相同,但和
不一定计算其所有参数
这里有一种使用cond
重写测试?
函数的方法(我还将参数从function
重命名为x
,因为它看起来不像函数。)
一般来说,只要你有一个布尔表达式expr
,你就可以用(cond[expr\t][else\f])
或(if-expr\t\f)
来替换它。但是这样做通常没有意义
下面是编写函数的另一种方法:(和条件1条件2)
的意思与(cond[condition1条件2][else#f])
相同,因此您可以这样编写函数:
(define (test? x)
(cond [(list? x)
(>= (length x) 1)]
[else
#f]))
但是,通常认为函数的原始版本是最好的:
(define (test? x) (and (list? x) (>= (length x) 1)))
首先,cond
和和
不是函数,它们是“特殊形式”(作为宏实现)。cond
表达式的语法与函数调用的语法不同。和
表达式的语法与函数调用的语法相同,但和
不一定计算其所有参数
这里有一种使用cond
重写测试?
函数的方法(我还将参数从function
重命名为x
,因为它看起来不像函数。)
一般来说,只要你有一个布尔表达式expr
,你就可以用(cond[expr\t][else\f])
或(if-expr\t\f)
来替换它。但是这样做通常没有意义
下面是编写函数的另一种方法:(和条件1条件2)
的意思与(cond[condition1条件2][else#f])
相同,因此您可以这样编写函数:
(define (test? x)
(cond [(list? x)
(>= (length x) 1)]
[else
#f]))
但是,通常认为函数的原始版本是最好的:
(define (test? x) (and (list? x) (>= (length x) 1)))
我的答案最初有一个输入错误:我省略了=
的第二个参数,因此函数实际上没有检查长度是否至少为1。我编辑了我的答案以修复它。我的答案最初有一个输入错误:我省略了=
的第二个参数,因此函数实际上没有检查长度是否至少为1。我编辑了m你为什么认为两者不同?你有证据吗?你为什么认为两者不同?你有证据吗?
(define (test? x) (and (list? x) (>= (length x) 1)))