我的代码就像这样
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define seq '(#t #t #t #t))
(accumulate and #t seq))
我使用ikarus,错误信息是
Unhandled exception
Condition components:
1. &who: and
2. &message: "invalid syntax"
3. &syntax:
form: and
subform: #f
4. &trace: #<syntax and>
问题是:
在累积功能中,和不能用作操作?
如果我像这样修改上面的代码,那么它就可以了。
(accumulate (lambda (x y) (and x y)) #t seq)
答案 0 :(得分:1)
and
不是程序,它是语法或宏。它需要是语法,因为它不会评估它的所有参数,它会在遇到#f
之前从左到右计算参数。