我几天前问过我如何开发一个函数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'?
答案 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))