scheme - 在Scheme中调试一个简单的列表函数?

标签 scheme lisp racket

我正在研究一些列表函数并在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/

相关文章:

lisp - 如何制作 Racket 阅读器宏以将一个字符的任何实例转换为另外两个字符?

python - 方案到 Python : most elegant translation of a recursive procedure?

scheme - 数字出现的次数

scheme - 如何捕获语法异常

vector - 根据键将向量拆分为向量的向量

lisp - 如何使用 Lisp 表达 BNF?

scheme - 在Scheme : bad idea?中实现 "Pythonic"映射

lisp - 等价类 LISP

emacs - 有这么多括号,你如何有效地输入 lisp?

fonts - Racket /平局 : get list of font face names?