2008-11-08 24 views
9

Estoy escribiendo algunos scripts Haskell desechables para resolver algunos de los problemas de Project Euler. Realmente no quiero tener que compilarlos debido a la cantidad de cambios que constantemente tengo que hacer, pero en algunos casos descubrí que me había quedado sin espacio en la pila.¿Cómo puedo aumentar el tamaño de la pila con runhaskell?

La documentación para runhaskell dice que la siguiente sintaxis debe aumentar el espacio de pila:

runhaskell +RTS -K5M -RTS Script.hs 

Esto nunca, nunca funciona (en cualquier permutación he probado). El tamaño de la pila siempre es 8,388,608. Esto es enloquecedor, y no he encontrado mucha ayuda en Google.

¿Alguna sugerencia? ¿Qué estoy haciendo mal?

Respuesta

8

Supongo que estás usando GHC. El capítulo 4 de la Guía del usuario de la recién estrenada 6.10.1 dice:

La única bandera runghc actualmente es -F /ruta/a/GHC, que le dice lo que runghc GHC utilizar para ejecutar el programa.

No veo un error registrado en http://hackage.haskell.org/trac/ghc. Me parece bastante tonto. Sugiero preguntar en irC#ghc, o en la lista de correo de cvs-ghc.

De los otros compiladores de Haskell/intérpretes, sólo se parece nhc98 le permiten establecer el tamaño de pila máximo. Dependiendo de su sistema operativo, nhc98 podría ser una opción.

1

Solo agréguelo.

Problem123.hs:

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

corto y dulce de línea de comandos:

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

nota final: No estoy seguro de que los llamaría "scripts".

+0

Sí, es fácil de compilar usando --make. Sin embargo, es aún más fácil presionar R en TextMate en OS X y hacer que el archivo se ejecute con runhaskell. Cuando estás pirateando y cambiando constantemente las cosas, es más fácil. –

+0

Scripting siempre ha sido uno de los objetivos de diseño de Haskell, y llamar a los programas de secuencias de comandos es bastante común, por ejemplo: http://groups.google.com/group/comp.lang.functional/browse_thread/thread/5a6df7d9b550346f?hl = en –

1

que estoy haciendo lo mismo (Proyecto Euler) y han estado usando GHC. El truco (gracias #haskell!) Es decirle al ejecutable tener más tamaño de la pila en lugar del compilador .

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