我有一些功能。
(define adjs '(black brown fast hairy hot quick red slow))
(define adj?
(lambda (a) (if (member a adjs) #t #f)
)
(define OK
(lambda (x)
(cond
((equal? x()) #t)
((equal? adj? (car x)) OK(cdr x))
((else x #f))
)
)
)
功能调整?正在检查输入是否是adjs中形容词列表的一部分。
我想用OK功能做的是用户输入一个列表并让该列表通过adj运行?看它是否是adjs列表的一部分。
当我运行该函数时会发生什么?我得到一个错误返回,表示当函数只预期两个时,我输入了“X”个参数。为什么呢?
答案 0 :(得分:2)
括号有问题。有些是不必要的,有些是缺失的,例如当你递归调用OK
过程时,或者你正在调用adj?
时 - 请记住,在Scheme中我们调用这样的过程:{{1 }},不是这样的:(f x)
。此外,递归的基本情况似乎已关闭,f(x)
子句使用不正确。试试这个:
else