问题标签 [clisp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
common-lisp - Lisp 没有反转我的列表
我正在 Lisp 中做一些功课,使用 clisp 进行测试,我正在加载此代码并在 clisp 中运行
我对 Lisp 有点陌生,但是这段代码根本没有反转thelist
,我的输出是:
我的代码的第一行说(reverse thelist)
,为什么它不反转第一个打印语句?我错过了什么吗?
lisp - 如何要求超简单的香草标准输入?
我发现当我在 clisp 程序的标准输入中输入这样的一行时......
...光标似乎在跳舞,我是否在做并不重要
或者
也就是说,当我键入每个右括号时,光标会短暂悬停在匹配的左括号上。如果我提前输入,有时会重新回显到该点之前输入的整行内容。
我想这很好,但我是通过一个 pty 执行此操作的,并且我希望该 pty 的输入(显示在 clisp 程序的标准输出和错误输出上的内容)是“干净的”。没有舞动的光标,没有线条的重新回响。
我想我可以使用命名管道进行输入和输出,但我想通过 pty.
如何使标准输入成为纯粹的香草?没有跳舞光标?没有预先输入的回声?我可以在某处修改配置文件吗?
lisp - 删除重复项时将槽值指定为键
下面的代码做我想要的:
但是有没有办法做到这一点而不必在第 13 行编写函数?是否有一种速记方法可以将类实例中的插槽值指定为键?
当然,以下内容会出现语法错误,但它给出了我正在寻找的大致概念。
lisp - 闭包如何引用自身?
假设我有一个普通的闭包,像这个简单的样本:
假设我(funcall)
三次执行该闭包的实例,并且在第三次执行的中间,这个闭包想要将自己保存在某个地方(例如在哈希表中)。然后我暂时没有(funcall)
这个实例。然后我从哈希表中检索这个实例并(funcall)
再次检索,得到返回值 4。
闭包中的函数是如何引用自身的,所以它可以将自己保存在那个哈希表中?
编辑1:这是一个更详细的例子。我通过将闭包作为参数传递给自身来实现目标。但我希望闭包能够自行完成所有这些操作,而无需进行自我参数化。
编辑2:是的,我知道我可以使用宏将函数的名称作为其第一个参数,然后使用该宏而不是(funcall)
,但我仍然想知道如何让闭包引用它自己的实例。
编辑 3:响应 SK-logic 的友好建议,我做了以下事情,但它没有做我想要的。它将三个新的闭包推入堆栈,而不是对同一个闭包的三个引用。看看当我从堆栈中弹出它们时,调用的值是 1、1 和 1 而不是 6、7 和 8?
编辑 4: Jon O 的建议完全符合要求。这是代码和输出:
编辑 5: Miron 的建议也达到了目标,实际上使代码更具可读性:
emacs - 设置 CLISP/SLIME 时,eval-buffer 不执行任何操作
我正在使用以下教程:
http://www.pchristensen.com/blog/articles/installing-clisp-emacs-and-slime-on-windows-xp/
我已经设置了所有目录并下载了所有必要的文件。但是,在第 4 步中。我使用的是 emacs 命令“eval-buffer”。我输入我的设置,运行“eval-buffer”,收到反馈(在底部栏中),并假设一切正常。然后,当我运行 Mx "slime" 时,我收到了错误:
我以为我在 .emacs 文件中输入了错误的内容,所以我重新编辑了它。但是,现在当我尝试运行 Mx "eval-buffer" 时,我没有收到任何反馈,而且我不相信我的新代码会执行。
顺便说一句,我的文件是:
lisp - 如何编译一个使用 cl-ppcre 的 clisp 程序?
在 Debian 上,我正在尝试编译一个使用 cl-ppcre 包的 CLISP 程序。
一个简化的示例程序(我将其称为变体 1)如下所示:
当我这样运行它时::
我懂了:
但是当我试图编译它时:
我懂了:
我在成功运行和使用变体 2 编译失败时得到了类似的结果:
我需要做什么才能编译它?
如果它可能有助于找到答案,我查看了由运行变体 1 触发的文件 I/O。我使用了 strace,并对输出进行切片和切块以仅显示相关文件和目录的名称。当我这样做时:
我得到了这个输出:
那我该怎么办?
lisp - 我如何要求 Lisp 编译器忽略(标签品种)函数?
我一直盯着斯蒂尔的Common Lisp 语言,直到我脸色发青,仍然有这个问题。如果我编译:
有时候是这样的:
很公平。那么如何让编译器忽略函数 y?我试过这个:
它奏效了:
但不知何故,我认为这不是警告所暗示的。
我该怎么办?
common-lisp - 读取带有提示的行后的换行状态似乎没有更新
我正在使用 GNU CLISP 并且因为这个程序而变得疯狂:
输出类似:
但是,如果我在 (read-line) 之前打印一个提示,我会得到一个虚假的空行:
例如:
我曾尝试在 read-line 之前和之后使用 (finish-output) ,但它没有帮助。我不明白那个空行是从哪里来的。我怀疑 CLISP 中存在错误。
sorting - 在 Clip 中排序
我想在 clisp 中编写插入排序和合并排序。输入将是一个平面的数字列表。如何递归地编写这两种类型(最好不使用 lambda)?对于插入排序,我正在考虑创建一个函数,该函数将列表和整数(这意味着感兴趣的元素的当前索引)作为参数,并使用 setf 和 nth 来操作列表。我知道其中还应该有另一个递归函数,但是就像......我只是对这么多要存储的函数和变量感到困惑。
对于合并排序,我完全不知道。