增加 Mac Common Lisp 5.0 中的最小堆栈溢出大小

发布于 2024-09-26 01:27:08 字数 315 浏览 2 评论 0原文

我对 Lisp 比较陌生(我只知道最基本的知识),目前我正在尝试运行 David Cope 创建的算法组合程序。它在 MCL 5.0 中运行,我不断收到以下错误:

进程运行时出错:值堆栈溢出。 要全局增加堆栈空间,请增加 *minimum-stack-overflow-size*

有谁知道我将使用什么函数来增加堆栈溢出大小以及如何计算计算机的最佳堆栈溢出大小?我在一台具有 512 MB RAM 的旧 Powerbook 上运行 MCL。

感谢您抽出时间,

艾迪

I'm relatively new to Lisp (I just know the very basics) and I'm currently trying to run an algorithmic composition program created by David Cope. It runs in MCL 5.0, and I keep getting the following error:

Error in process play: Stack overflow on value stack.
To globally increase stack space, increase *minimum-stack-overflow-size*

Does anyone know what function I would use to increase the stack overflow size and how I would calculate the best stack overflow size for my computer? I'm running MCL on an old Powerbook with 512 MB of RAM.

Thanks for your time,

Eddie

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不喜欢何必死缠烂打 2024-10-03 01:27:08

最初内存选项是用 ResEdit 编辑的。

还可以使用 SAVE-APPLICATION 函数并使用 :MEMORY-OPTIONS 关键字来指定各种值。 MCL 参考手册对此进行了描述。此功能保存新的 MCL 应用程序。通常,我们会启动普通 MCL,设置各种选项,加载一些库,然后保存一个新应用程序。然后在开发过程中使用这个新应用程序。

必要的堆栈大小取决于您要运行的程序。

如果发生堆栈溢出,在 MCL 中,许多情况下您可以继续使用更大的堆栈。只需选择正确的重启选项即可。

Originally memory options were edited with ResEdit.

One can also use the SAVE-APPLICATION function and use the :MEMORY-OPTIONS keyword to specify various values. This is described in the MCL reference manual. This function saves a new MCL application. Typically one starts vanilla MCL, sets various options, loads some libraries and then saves a new application. This new application is then used during development.

The necessary stack size depends on the program you want to run.

If a stack overflow happens, in MCL you can continue with a larger stack in many cases. Just choose the right restart option.

‘画卷フ 2024-10-03 01:27:08

似乎说你只需要修改特殊变量*minimum-stack-overflow-size*。当您处于 REPL(CL-USER> 提示符或类似提示)时,通过评估其名称来检查此变量:

CL-USER> *minimum-stack-overflow-size*

然后,使用 setf

CL-USER> (setf *minimum-stack-overflow-size* 1234567)

但是,这可能不是真正的问题。我不太了解 MCL,但如果您要运行的程序使用依赖于这种优化的尾递归函数。

It seems to say that you simply need to modify the special variable *minimum-stack-overflow-size*. When you are at the REPL (CL-USER> prompt or similar), inspect this variable by evaluating its name:

CL-USER> *minimum-stack-overflow-size*

Then, set it to a bigger value (the 1234567 is just a placeholder) with setf:

CL-USER> (setf *minimum-stack-overflow-size* 1234567)

However, this might not be the real issue. I do not know MCL well, but it might be necessary to (declaim (optimize (speed 3) (safety 0))) or similar to enable tail call elimination, if the program you want to run uses a tail recursive function which depends on such optimization.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文