我现在正在使用racket来构建函数,该函数返回与给定动物列表对应的动物名称列表。但是出现了问题。
(define (name-pets l)
(cond
[(eq? "dog" first(l)) (append 'happy (name-pets (rest (l))))]
[(eq? "cat" first(l)) (append 'smart (name-pets (rest (l))))]
[(eq? "pig" first(l)) (append 'pinky (name-pets (rest (l))))]
[else (append 'unnamed (name-pets (rest (l))))]))
(name-pets (list "pig" "cat" "dog" "dolphin"))
当我运行代码时,
申请:不是程序;期望一个可以应用于参数的过程 给出:'(“猪”“猫”“狗”“海豚”) 参数......:[无]
问题是什么?
将first(l)
改为(first l)
,将(rest (l))
改为(rest l)
。请注意,您无法在Racket中插入额外的括号。语法(l)
意味着调用l
,但由于l
是一个列表而不是函数,因此会遇到问题。