我有一个简单的球拍定义,用于将二进制数字相乘。 它使用一个经过充分testing的“addWithCarry”定义,它有三个参数:两个列表和一个进位数字,并返回二进制和。 二进制数字以相反的顺序表示为列表。 我用debugging器遍历testing线,并正确执行recursion。 它会在每次缩小y列表时执行multBins,然后按照预期执行addWithCarry函数。 当它重新堆栈时,它突然抛出一个exception“应用程序:不是一个过程,期望可以应用于参数的过程”,参数“(0 0 0 1 0 1 1)”是最高的值“x”加在总数上。 我知道这个错误可能会发生,当你试图将一个函数的结果作为一个函数与一个参数,但我没有看到这里。 看着debugging器,一切似乎都完美地工作,直到最后。 有任何想法吗? (define (multBins xy) (cond ((null? y) '() ) ((= (first y) 0) ((multBins (cons 0 x) (rest y)))) (#t ((addWithCarry x (multBins (cons 0 x) (rest y)) 0))))) (test (multBins '(1 0 1 1)'(1 1 0 1))'(1 1 1 1 […]