搞清楚错误

时间:2013-02-13 00:07:23

标签: scheme racket

我几天前问过我如何开发一个函数one,它会使用一个符号列表并返回相同的列表,但每个cat实例都会加倍。

所以例如

 (one (cons 'animal(cons 'table (cons 'cat (cons 'bread
        empty)))))

我会得到

(cons 'animal (cons 'table (cons 'cat (cons 'cat (cons 'bread 
    empty)))))

继承人我的部分

(define (one alos)
  (cond [(empty? alos)empty]
        [(symbol=? 'cat (first alos)) (cons (first alos) (cons (first alos) (one rest alos)))]
         [else (cons (first alos) (one rest alos))]))

我想知道为什么我一直得到'一个:期望只有一个参数,但找到了2'?

2 个答案:

答案 0 :(得分:2)

看这里: [(symbol=? 'cat (first alos)) (cons (first alos) (cons (first alos) (one rest alos)))] 和这里: [else (cons (first alos) (one rest alos))]))

one被叫什么?

答案 1 :(得分:2)

你错过了几个括号,这应该解决它:

(define (one alos)
  (cond [(empty? alos) empty]
        [(symbol=? 'cat (first alos))
         (cons (first alos) (cons (first alos) (one (rest alos))))]
        [else (cons (first alos) (one (rest alos)))]))

请注意,您递归调用one,如下所示:

(one rest alos)

但是正确的方法是:

(one (rest alos))
相关问题