我正在浏览一些列表函数并在Scheme中编程。我这样做是为了好玩。这不是学校/大学的任务。我很谦卑地意识到我对基本的功能和陈述感到磕磕绊绊!
令我惊讶的是,这个member?
函数一直引发错误,有多个Scheme REPL报告我试图点击非函数#t。
(define member?
(lambda (atm lst)
(cond
((null? lst) #f)
((equal? atm (car lst)) #t)
(else
((member? atm (cdr lst)))))))
我做错了什么?
答案 0 :(得分:2)
((member? atm (cdr lst)))
假设(member? atm (cdr lst))
评估为#t
,则上述内容相当于(#t)
,因此它会尝试将#t
应用为函数,这是错误消息告诉的内容你。
删除外括号,您将获得所需的结果。