1

几天前我问我如何开发一个函数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))]))

我想知道为什么我一直得到“一个:只需要 1 个参数,但找到 2 个”?

4

2 回答 2

2

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

用什么one称呼?

于 2013-02-13T01:09:01.310 回答
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))
于 2013-02-13T01:19:27.373 回答