问题标签 [ccl]

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.

0 投票
1 回答
635 浏览

arrays - common lisp:值 16777216 不是预期的类型(UNSIGNED-BYTE 24)

我在 Windows 7 上使用 Clozure-CL。我为测试编写了一个简单的“图像”类(嗯,结构)。

不幸的是,当我尝试这样做时:

我收到此错误:

这是堆栈跟踪(从 slimv 复制粘贴):

据我了解,Clozure-CL 使用一些内部函数来制作字节数组,并且出于某种原因,该函数需要 24 位整数参数作为数组大小,并且因为 16777216 是 2 24,它不适合 24 位整数。我想取消这个限制。我该如何解决这个问题?

编辑

我检查了文档,发现在 32 位 Clozure-CL 上,最大数组大小限制 ( array-total-size-limit) 是(expt 2 24). 64 位版本的限制要大得多,但是,我可以做些什么吗?

0 投票
1 回答
176 浏览

lisp - 写入文件时出错“对#来说是私有的

我刚开始使用 CL,我在 Windows XP64 中使用 CCL+Slime 和 Emacs v24。我遇到以下问题:

如果我在 REPL 中输入这三个表达式,我会得到预期的结果,一个包含文本“Something”的文件:

但是,如果相同的代码在文本缓冲区中,并且我使用 Cc Cc 逐一评估表达式,则在评估 (write ...) 语句时会出现此错误:

可能是什么原因?谢谢你的帮助。

编辑:

我在回溯中发现了这个,所以错误似乎来自 (CCL::CHECK-IOBLOCK-OWNER ...),它说所有者是“PROCESS Worker(31)”:

我做了以下测试,看看谁拥有文件流:

  • 我从 REPL 打开了两个不同的文件file-out1file-out2,当我尝试使用 Cc Cc 从测试缓冲区写入它们时,我收到错误消息,指出所有者是“worker(12)”。

  • 我使用 Cc Cc 从测试缓冲区打开file-out1,当尝试从测试缓冲区或 REPL 或其他任何地方写入文件时,我收到错误消息,指出所有者是“worker(30)”。

  • 我使用 Cc Cc 从测试缓冲区打开file-out2,当尝试从测试缓冲区或 REPL 或其他任何地方写入文件时,我收到错误消息,指出所有者是“worker(31)”。

  • 我用 Cc Ck 一次运行了测试缓冲区(打开、写入和关闭文件),它工作了。

结论:

REPL 有一个不会更改的 Worker 进程 ID,但从单独的缓冲区(Cc Cc 或 Cc Ck)发出的评估每次都会生成一个新的 Worker 进程。有人可以解释整个“工人进程”吗?

编辑:

我在 Linux 中重新测试并获得与 Windows 相同的行为,为避免混淆,我删除了有关 Linux 的部分


我从comp.lang.lisp中的RG得到了答案:CCL 中 (open ...) 的默认行为是将流的所有权授予第一次尝试对其进行 I/O 操作的进程。这可以用参数:sharing :lock覆盖。这记录在http://ccl.clozure.com/ccl-documentation.html#CCL-Stream-Extensions中。

我进行了测试,现在它按预期工作。

0 投票
4 回答
1667 浏览

common-lisp - Undefining a class and all its methods in Common Lisp

I would like to undefine a class and all of its methods but after a quite thorough search on Googlore I have been unable to find a clue about how to do this.

I am using an implementation of Commmon Lisp called CCL (Clozure CL).

0 投票
1 回答
296 浏览

common-lisp - common lisp:将 quicklisp 加载的项目分叉到子目录中

我有一个使用 lispbuilder-sdl 的小型通用 lisp 项目。我想制作一个 lispbuilder-sdl 的分支,将其放入子目录并从中删除一些我不需要的东西。

我怎样才能做到这一点?

据我所知,quicklisp 可以加载当前目录、“local-projects”目录(在 quicklisp 自身安装到的任何文件夹中)中的项目,或从 Internet 下载它们。那么如何创建一个“子项目”,它是现有项目的一个分支(可以通过快速加载获得?)而不用 *.asd 文件污染顶级目录?

- 附加信息 -

我在 Windows 7 64 位上使用 32 位 clozure-cl。

当前项目开始使用此文件:

game.asd 位于当前目录中,依赖项被下载到 quicklisp 目录并从那里加载。

0 投票
2 回答
110 浏览

lisp - 这可能会永久且意外地覆盖编译器自己的功能吗?

所以我正在编写自己的函数并调用它make-list并从调试器中得到它:

很好,但是如果我不小心选择了选项怎么办0?我的编译器是否会损坏并永远对内部函数进行错误的定义,就像我会替换它一样?

0 投票
1 回答
603 浏览

c# - 如何加快 Connected Component Labeling(第二遍)

我需要建议如何加快 CCL 算法的第二遍。第一次通过只需要几毫秒,但第二次通过需要几秒钟。我多次尝试优化等价表或使用指针,但第二遍总是很慢。感谢您的任何建议

0 投票
0 回答
77 浏览

common-lisp - 在另一个目录中运行程序

SBCLsb-ext:run-program有一个名为directory. 当您通过它时,您指定的程序将在该目录中运行,而不是在您的cwd.

有什么方法可以达到同样的效果ccl:run-program吗?

0 投票
1 回答
113 浏览

multithreading - 将对象参数传递给宏

将对象参数传递给宏时遇到错误。我必须引用这个论点,把它放在一个列表中,还是不引用它?

我希望使用 Clozure Common Lisp 生成和并行运行多个进程,使用读写锁来控制数据输出到另一个进程。With-write-lock 是一个宏,它等待给定的锁可用于写访问,然后在持有锁的情况下执行其主体。但是,无论我如何尝试将锁传递给 with-write-lock,我都会遇到错误。我认为我遇到了麻烦,因为我不明白如何将锁定对象传递给 with-write-lock 宏。如果我将锁绑定到一个符号,我会得到解构错误:

执行时:(:INTERNAL CCL::NX1-COMPILE-LAMBDA),在进程 Listener(4)。

但是如果我将调用 make-read-write-lock 作为 lock 参数传递给 with-write-lock 那么我会得到一个未声明的自由变量错误:

错误:未绑定变量:MAKE-READ-WRITE-LOCK 执行时:#,正在处理 Listener(4)。

我失败是因为我误解了如何将对象传递给宏,还是因为写锁更特别的原因而出错?

这是 Clozure Common Lisp (macros.lisp) 附带的 with-write-lock 宏:

0 投票
1 回答
307 浏览

lisp - CCL Save-Application、Clisp Saveinitmem、问题

在 mac os x 10.9 上的 ccl 上,我在创建可执行文件时遇到问题。

(save-application "/full/path/to/saved-app" :prepend-kernel t)双击生成的可执行文件进入终端,显示很长的错误,以类似错误开头:加载捆绑包的问题:无法确定类名并以内核调试器选项结尾。

Windows上的ccl上,我只需定义一个函数并执行上述相同操作以保存可执行文件,稍后我可以双击它运行的输出文件并记住我定义的函数,mac上的ccl 也不记得当我保存图像并将其加载到内核时手动.

clisp方面,它在我的mac上创建可执行文件,在某些寡妇安装中,它创建可执行文件但我无法启动可执行文件,它给出了一个错误提示窗口,上面写着类似

应用程序无法启动,因为找不到 libreadline6.dll。重新启动应用程序可能会解决问题

但不要。

这里有什么问题,有什么解决办法吗?

0 投票
0 回答
165 浏览

batch-file - 从 lisp 文件中调用 .bat/.ps 文件

我们如何从 SBCL 或 CCL 中的 lisp 文件调用 .bat 文件或 powershell 文件?我们需要这样做,因为批处理文件调用带有一些参数的 gprolog 命令。

注意:LispWorks 有如下内容:

其中 runprolog.bat 是使用参数“KeyboardDisplay”调用的文件

如果 SBCL 或 CCL 没有这样的命令,你能推荐任何其他有助于完成这项任务的 lisp 编译器吗?