【发布时间】:2013-11-18 19:09:41
【问题描述】:
所以我们对 Scheme 进行了测试,我发现其中一个问题是错误的,但我不知道如何纠正它。它要求的是:
编写一个 Scheme 函数 count_lambda,它接受任意表达式 y,并返回 y 中 'lambda 符号的数量。例如,调用 (count_lambda '(lambda x . lambda y . x y) z) 应该返回 2。
我想到的方法是检查变量是否为“lambda”类型。但是,lambda 可能不是一种类型.......另外,我把表达式想象成一个列表......不确定我是否也可以这样做......所以这就是我所拥有的:
(define count_lambda
(lambda (y)
(if (null? y) 0
(cond
((lambda? y) 1)
((number? y) 0)
((cons? y) (+ (count_lambda(car y)) (count_lambda(cdr y)))))))
它说 lambda 是一个未定义的函数,所以那里告诉我我看错了。不幸的是,我不知道该怎么做。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
您提供的示例输入不正确,它有括号问题,并且:
x.lambda看起来像一个错误,也许您的意思是x . lambda?请检查并修复它。 -
看起来好像没有空间了,但也许吧。有什么区别?
-
它让世界变得与众不同。
x.lambda不是lambda符号,而x . lambda包含lambda符号。提供正确的输入非常重要,即使有适当的空格,您提供的示例也不会编译,这是一个无效的表达式,因为点和括号放错了 -
好吧,不知道。我看到括号错了;我只是认为她让我们进入的内容是正确的。对我来说,看起来 x 和 y 之间应该有一个?
-
等一下,我不应该加括号