计划将空列表作为函数参数传递

标签 scheme lisp

我正在做一些基本的 lisp/scheme,我遇到了无法将空列表/null(据我了解它们的行为几乎相同)传递给函数的问题。 例如:

(define (fxn L) 
  (if (null? L)
      ( '() ) 
      (cdr L)))

我得到了

> (fxn '())
procedure application: expected procedure, given: () (no arguments)

> (fxn null)
procedure application: expected procedure, given: () (no arguments)

有什么建议吗?

最佳答案

发生这种情况是因为您在 if 语句中将 '() 括起来了。 '() 是文字而不是函数,因此您不能调用它,即不能将其括在括号中。

尝试:

(define (fxn L)
  (if (null? L)
      '()
      (cdr L)))

关于计划将空列表作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523092/

相关文章:

list - n-Queens - 逻辑错误 - 确定垂直威胁

lisp - 如何让 Lisp 忘记以前导出的符号?

algorithm - 违约

scheme - 使用 Racket 仅搜索一个列表 "1"

Scheme 中的流 - 通过方案中的流映射定义整数

functional-programming - 下棋

lisp - 这个 Common Lisp 代码发生了什么?

math - 为什么这些稍微不同的寻根方法会产生不同的结果?

lisp - 在 Lisp 中,+ 函数实际上可以有多少个输入?

random - 生成随机 ASCII 字符