调试Scheme中的简单列表函数?

时间:2016-12-05 16:35:38

标签: scheme lisp racket

我正在浏览一些列表函数并在Scheme中编程。我这样做是为了好玩。这不是学校/大学的任务。我很谦卑地意识到我对基本的功能和陈述感到磕磕绊绊!

令我惊讶的是,这个member?函数一直引发错误,有多个Scheme REPL报告我试图点击非函数#t。

    (define member?
     (lambda (atm lst)
      (cond
        ((null? lst) #f)
        ((equal? atm (car lst)) #t)
        (else
          ((member? atm (cdr lst)))))))

我做错了什么?

1 个答案:

答案 0 :(得分:2)

((member? atm (cdr lst)))

假设(member? atm (cdr lst))评估为#t,则上述内容相当于(#t),因此它会尝试将#t应用为函数,这是错误消息告诉的内容你。

删除外括号,您将获得所需的结果。