常见的 Lisp 错误:“应该是 lambda 表达式”

2023-11-25

几天前我刚刚开始学习 Common Lisp,我正在尝试构建一个将数字插入树中的函数。我收到一个错误,

*** - SYSTEM::%EXPAND-FORM: (CONS NIL LST) 应该是 lambda 表达式

通过谷歌搜索,似乎当你有太多括号时就会发生这种情况,但是在看了一个小时左右并改变了周围的事情之后,我不知道我可以在哪里做这个。

这是发生这种情况的代码:

(defun insert (lst probe)
    (cond ((null lst) (cons probe lst))
        ((equal (length lst) 1)
            (if (<= probe (first lst))
                (cons probe lst)
                (append lst (list probe))))
        ((equal (length lst) 2)
            ((cons nil lst) (append lst nil) (insertat nil lst 3)
                (cond ((<= probe (second lst)) (insert (first lst) probe))
                     ((> probe (fourth lst)) (insert (fifth lst) probe))
                     (t (insert (third lst) probe)))))))

我很确定它发生在 ((equal (length lst) 2) 之后,其中的想法是将一个空列表插入到现有列表中,然后将一个空列表附加到末尾,然后将一个空列表插入到中间。


正确的!问题就在那之后的一行中,它说

((cons nil lst) (append lst nil) (insertat nil lst 3) ...

问题在于两个左括号。括号可以改变特殊上下文中的含义(例如cond您正在使用的形式),但在这种情况下,括号表示常规函数应用程序,就像您可能习惯的那样。这意味着括号后面的第一个东西必须是一个函数。从outer括号中,第一件事是(cons nil lst),所以它一定是一个函数(但它不是)。

请注意,您不能只删除括号,因为cons函数返回一个像您想要的新列表,但不会更改旧列表。你可能想要这样的东西:

(setq lst (cons nil lst))
(setq lst (append lst nil))
(setq lst (insertat nil lst 3))
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见的 Lisp 错误:“应该是 lambda 表达式” 的相关文章

  • C# 中的通用 Func<> 类型

    我正在用 C 编写一个小型 Lisp 解释器 它基本上已经可以工作了 目前我正在使用一个接口来表示函数 public interface LispFunction object Apply ArrayList parameters 该接口由
  • 以下函数式编程模式的正确术语是什么?

    我听说它被称为stream http mitpress mit edu sicp full text sicp book node72 html as an 无限列表 http en wikibooks org wiki Clojure P
  • StringIndexOutOfBoundsException 字符串索引超出范围错误

    当我在输入整数后输入字符串 s 时 出现此错误 Exception in thread main java lang StringIndexOutOfBoundsException String index out of range 0 a
  • CLISP - 反转简单列表

    我必须反转简单 单维 列表的元素 我知道有一个内置的反向函数 但我不能用它来做这个 这是我的尝试 defun LISTREVERSE LISTR cond lt length LISTR 2 LISTR listr is 1 atom or
  • Common Lisp 中重置状态

    新手 Common Lisp 问题在这里 有没有办法重置环境状态 我的意思是 是否有一些命令可以使 REPL 恢复到启动后的相同状态 即取消所有变量 函数等 或者如果这不在 Common Lisp 标准中 是否有一些扩展在 SBCL 我使用
  • 在 Parenscript 中使用 regex(正则表达式)

    我正在尝试 Parenscript 在尝试使用正则表达式函数时 我得到了意外的输出 例如 参考手册 https common lisp net project parenscript reference html shows regex f
  • 定义以数字开头的函数名称(在 Python 3 中)?

    我尝试创建以下函数 def 3utr do something 但是 我收到一个语法错误 将 3 替换为 三 即可解决问题 我的问题是 为什么会出现语法错误呢 Python 3 有没有办法让函数名以数字开头 这是一个语法错误 因为语言规范不
  • 为什么程序会给出“非法类型开始”错误?

    这是相关的代码片段 public static Rand searchCount int x int a int b int c int d int f int g int h int i int j Rand countA new Ran
  • 人们可以放心地忽略宏和内置宏之间的区别吗?

    我从 Clojure 开始 这也是我的第一个 lisp 显然有很多东西需要吸收 为了减轻认知负担 我尝试找到我可以安全地忽略的部分 目前 人们能否安全地以相同的方式处理带有宏的表单和带有内置函数的表单 或者是否会出现以后出现的陷阱 换句话说
  • 在 Java Runtime.getRuntime().exec(...) 中使用引号和双引号

    我正在尝试在 Mac OSX 中从 Java 启动 Lisp 映像 使用控制台中的图像 我输入以下内容 lisp image eval package method some argument 一切都运行良好 在Java中 我在使用传递引号
  • 有没有一种简单的方法可以使用 Common Lisp 中的 Python 库?

    在编写 Common Lisp 代码时我真正怀念的一件事是访问 Python 库 包括标准库和第三方模块 CLPython 提供了 Python 功能的有限子集 这阻止了大多数库的使用 因此这对我来说并不是很有用 我希望能够从 Common
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • 即使没有任何内容,也会出现 Notepad++ XML 解析错误“文档末尾有额外内容”

    当我尝试在 Notepad 中验证 55 mb XML 文件时 收到上述错误消息 第一个遇到的错误在这里 第 1441520 行 共 22258651 行 Notepad 的屏幕截图 https i stack imgur com 9Atc
  • Scheme/Lisp 嵌套循环和递归

    我正在尝试解决方案中的一个问题 该问题要求我使用嵌套循环或嵌套递归 例如我有两个列表 我必须检查它们的笛卡尔积的条件 解决这些类型问题的最佳方法是什么 有关如何简化这些类型的函数的任何指示吗 I ll elaborate a bit sin
  • Lisp 中的 (定义 (平均 ....))

    我只是在玩scheme lisp 并正在考虑如何纠正我自己的定义average 我不确定如何做一些我认为需要的事情 定义一个接受任意数量参数的过程 计算这些参数 将参数列表传递给 以将它们加在一起 有人有定义的例子吗average 我似乎对
  • Python给出语法错误但没有错误? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 有人能说为什么 python 不允许这样做吗 coding utf 8 import win32api win32con os t
  • 评估 Common Lisp 宏的参数

    我想制作一个宏 其行为取决于它的参数之一 例如 defclass myvar l initarg l reader l defparameter mv1 make instance myvar l 10 defmacro mac1 v pr
  • 学习 Lisp 的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 学习 LISP 的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u

随机推荐

  • 带硬件加速的画布抗锯齿(Android API 11 及更高版本)

    我有一个简单的位图 我在画布中绘制并使用矩阵旋转 我遇到的问题是 使用硬件加速时 边缘在旋转时不会消除锯齿 这在关闭硬件加速的情况下完美运行 当然 像 setDrawFilter 这样的东西是没有用的 因为当硬件加速打开时它们会被忽略 ca
  • javascript中如何在不同html页面之间传递变量值

    我想传递选择的值项目清单到另一个页面 意味着如果我从列表中选择 abc 那么这个 abc 值会传递到下一个 html 表单 它应该只打开该配置文件页面 有什么方法可以在不同的 html 页面之间使用此变量 ui li icon li cli
  • 为什么 C# 中不调用所有静态构造函数(即父类的静态构造函数)?

    我有三节课 Base Derived and Final Derived源自于Base and Final源自于Derived 所有三个类都有一个静态构造函数 班级Derived作为一个名为的公共静态方法Setup 当我打电话时Final
  • Jenkins Groovy 构建后脚本用函数评估文件

    我正在使用以下代码构建后我的詹金斯工作步骤 evaluate new File Set BuildBadge groovy 因此 如果确实如此 它就会成功运行脚本not包含函数 如果在脚本中我定义了一个function例如 def addS
  • 带有整数的 if 语句[重复]

    这个问题在这里已经有答案了 我是 Java 新手 我正在寻找家庭作业方面的帮助 我不会发布我最初这样做的完整代码 但我认为这不会帮助我学习它 我有一个与类一起使用的程序 我有一个将验证选择的类 一个包含我的 setter 和 getter
  • Linux 上的 PHP 5.4:如何连接 MS SQL Server 2008?

    我有一台 Linux 服务器 Debian 6 安装了 Apache 2 2 和 PHP 5 4 我需要将我的应用程序与 MS SQL Server 2008 连接 我的应用程序使用 Zend Framework 1 11 和字符集 UTF
  • 如何在选择文本后弹出窗口?

    我似乎无法弄清楚这一点 我有一个 div 里面有一些文本 当用户选择其中的一部分 完全随机 无论他们想要什么 时 我希望出现一个小弹出窗口 其中包含文本 要启动弹出窗口 我可以这样做吗 textdiv click function 但是我怎
  • 出现“内容丢失”的 Turbo Frame 错误

    我正在尝试在 Rails 应用程序中使用turbo frame tag 来管理一些任务 我为我的任务创建了一个脚手架 我将要使用的页面包装在 Turbo 框架标签内 如下所示 h1 New task h1 br div gt div
  • 从 scala 脚本退出 Spark-shell

    我正在使用这个命令来运行 scala 脚本 spark shell i test scala 在脚本执行结束时 我仍然看到 Spark shell 正在运行 我在 test scala 脚本中使用了 q quit 来尝试退出 但它不起作用
  • BasicHTTPServer、SimpleHTTPServer 和并发

    我正在使用 python BasicHTTPServer 和 SimpleHTTPServer 编写一个小型 Web 服务器用于测试目的 看起来它一次只处理一个请求 有什么办法可以让它更快一点 而又不会太麻烦吗 基本上我的代码如下所示 我想
  • SessionNotCreatedException:消息:会话未创建:尽管安装了 Chrome v74,但此版本的 ChromeDriver 仅支持 Chrome 版本 74

    我开始在 python 中使用 selenium 当我尝试运行此代码时 它只是弹出一个错误 表明此版本的 chromedriver 仅支持 74 版本的 chrome 但我已经从这里下载了 74 版本 https chromedriver
  • 注释使私有方法仅对测试类公开[重复]

    这个问题在这里已经有答案了 谁有解决这个共同需求的解决方案 我的应用程序中有一个课程 有些方法是公共的 因为它们是 api 的一部分 有些是私有的 因为它们供内部使用 使内部流程更具可读性 现在 假设我想编写一个单元测试 或者更像是一个集成
  • 文本区域最大长度不起作用

    我想设置文本区域的最大长度 我使用以下代码进行相同的操作 但它不起作用
  • 使用特征矩阵构建 3D 结构的最有效选项

    我的代码需要 3D 矩阵 数组结构 现在我的矩阵和向量都依赖 Eigen 现在我正在使用创建一个 3D 结构new MatrixXd cube new MatrixXd 60 for int i i lt 60 i cube i Matri
  • ASP.NET MVC 环境的推荐单元测试书籍 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要推荐一本与 ASP NET MVC 一起使用的优秀单元测试书籍 根据您实际阅读和使用的书籍 您的圣经 您推荐什么 似乎所有较新的 ASP NE
  • 使用闪亮的应用程序创建反应式数据框

    我试图让这个反应返回一个我可以用绘图操作的数据帧 avghour lt reactive result lt data frame start date lt as numeric unlist input i6 1 end date lt
  • 无法加载 rJava,因为无法加载共享库

    我一直在努力在 R 中加载 rJava 包 我收到以下消息 gt library rJava Error in inDL x as logical local as logical now unable to load shared lib
  • SQL Server:找出导致 TSQL 失败的行 (SSIS)

    SQL Server 2005 问题 我正在开展一个数据转换项目 其中我要获取 80k 多行并将它们从一个表移动到另一个表 当我运行 TSQL 时 它会出现各种与转换类型或其他相关的错误 有没有办法找出导致错误的行 UPDATE 我正在执行
  • Reflection API 是否破坏了数据封装的初衷?

    最近我遇到了 Reflection API 令我惊讶的是我们可以访问甚至更改私有变量 我尝试了以下代码 import java lang reflect Field public class SomeClass private String
  • 常见的 Lisp 错误:“应该是 lambda 表达式”

    几天前我刚刚开始学习 Common Lisp 我正在尝试构建一个将数字插入树中的函数 我收到一个错误 SYSTEM EXPAND FORM CONS NIL LST 应该是 lambda 表达式 通过谷歌搜索 似乎当你有太多括号时就会发生这