我正在研究一些列表函数并在Scheme中对它们进行编程。我这样做是为了好玩。这不是学校/学院的作业。意识到我在非常基本的函数和语句上遇到了困难,这真是令人羞愧!
令我惊讶的是,这个 member?
函数始终引发错误,有多个方案 REPL 报告我正在尝试点击非函数 #t。
(define member?
(lambda (atm lst)
(cond
((null? lst) #f)
((equal? atm (car lst)) #t)
(else
((member? atm (cdr lst)))))))
我做错了什么?
最佳答案
((member? atm (cdr lst)))
假设 (member? atm (cdr lst))
的计算结果为 #t
,则上述等价于 (#t)
,因此它尝试将 #t
作为函数应用,这就是错误消息告诉您的内容。
去掉外面的括号,你就会得到你想要的结果。
关于scheme - 在Scheme中调试一个简单的列表函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978966/