Cómo ejecutar un archivo haskell en modo interpretado


Me han dicho que puedes interpretar archivos haskell (lo que supongo que significa que funcionarán como Ruby/Python/Perl). No se puede encontrar la opción de línea de comandos en ghc para hacer esto, sin embargo. Siempre quiere compilar mi archivo. Eché un vistazo a ghci también, pero siempre me deja en un repl.

Básicamente quiero simplemente hacer ghc -i MyFile.hs (donde - i es una bandera inventada que estoy fingiendo correlatas al modo interpretado) y ejecutarla para que pueda obtener retroalimentación rápida mientras estoy probando ideas y aprendizaje.

Author: rene, 2011-12-30

4 answers

$ runhaskell MyFile.hs

Alternativamente, runghc (son la misma cosa). ghci MyFile.hs también iniciará una sesión de REPL interactiva con MyFile.hs cargado, pero si desea ejecutar un programa principal entonces runhaskell es el camino a seguir.

Probablemente sea una buena idea adquirir el hábito de probar partes de su programa como unidades aisladas en GHCi en lugar de ejecutar todo el programa cada vez, pero obviamente para scripts más cortos es más simple y fácil ejecutar todo el programa.

 100
Author: ehird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 05:11:05

Puedes tener un script como este:

#!/usr/bin/env runhaskell
main = putStrLn "hello world"

Después de hacer el archivo ejecutable (es decir, chmod +x haskell_script), puede ejecutarlo como cualquier otro script de shell.

 31
Author: David Miani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 05:15:31

Abra el intérprete GHC ejecutando ghci en una terminal, y luego cargue un archivo escribiendo :load example.hs. Más detalles en este enlace.

 11
Author: Óscar López,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 05:09:11

Para ejecutar el código escrito en un archivo, digamos myfile.txt, que contiene líneas simples de código que funcionan en el intérprete GHC, como:

let a = 0 in a:[1,2]
let x = [1,2] in x ++ [3,4]

Puedes hacer:

ghc -e ':script myfile.txt'

Editar

En Windows, se requieren comillas dobles:

ghc -e ":script myfile.txt"

En su lugar, también se puede abrir GHCi y hacer :script myfile.txt.

 1
Author: Stéphane Laurent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-24 16:15:35