【问题标题】:How can I increase the stack size with runhaskell?如何使用 runhaskell 增加堆栈大小?
【发布时间】:2008-11-08 21:48:42
【问题描述】:

我正在编写一些一次性的 Haskell 脚本来解决一些 Project Euler 问题。我真的不想编译它们,因为我经常需要进行大量更改,但在某些情况下,我发现堆栈空间已用完。

runhaskell 的文档说以下语法应该增加堆栈空间:

runhaskell +RTS -K5M -RTS Script.hs

这永远不会奏效(在我尝试过的任何排列中)。堆栈大小始终保持为 8,388,608。这太令人抓狂了,我在 Google 上没有找到太多帮助。

有什么建议吗?我做错了什么?

【问题讨论】:

    标签: haskell haskell-stack


    【解决方案1】:

    我猜你正在使用 GHC。新发布的 6.10.1 的用户指南第 4 章说:

    目前唯一的 runghc 标志是 -f /path/to/ghc,它告诉 runghc 哪个 用于运行程序的 GHC。

    我没有看到在 http://hackage.haskell.org/trac/ghc 记录的错误。对我来说似乎很蹩脚。我建议在 irc #ghc 或 cvs-ghc 邮件列表上询问。

    在其他 Haskell 编译器/解释器中,似乎只有 nhc98 允许您设置最大堆栈大小。根据您的操作系统,nhc98 可能是一个选项。

    【讨论】:

      【解决方案2】:

      我正在做同样的事情(Project Euler)并且一直在使用 ghc。诀窍(感谢#haskell!)是告诉可执行文件拥有更多的堆栈大小,而不是编译器

      $ ghc -O2 -o 23 23.hs
      $ ./23 +RTS -K128M
      

      【讨论】:

        【解决方案3】:

        只需编译它。

        问题123.hs:

        module Main where
        main = do
            print solution
        solution = ...
        

        简洁的命令行:

        ghc --make -O3 Problem123.hs
        ./Problem123
        

        最后一点:我不确定我是否会称它们为“脚本”。

        【讨论】:

        • 是的,使用 --make 编译很容易。但是,在 OS X 上的 TextMate 中点击 R 并使用 runhaskell 执行文件更加容易。当您不断修改事物并进行修改时,它会变得更容易。
        • 脚本一直是 Haskell 的设计目标之一,调用程序脚本相当普遍,例如:groups.google.com/group/comp.lang.functional/browse_thread/…
        猜你喜欢
        • 2015-11-22
        • 2013-12-24
        • 2011-09-29
        • 2010-11-24
        • 2013-03-15
        • 2012-02-10
        • 2018-01-17
        • 2011-01-05
        相关资源
        最近更新 更多