Cómo configurar GHCi para importar módulos automáticamente


Cuando uso GHCi, casi siempre termino importando Control.Applicative, Data.List, etc. . ¿Hay alguna forma de configurar GHCi para importar automáticamente esos módulos?

Además, después de importarlos, ¿cómo puedo evitar que el prompt sea increíblemente largo?

Prelude Control.Applicative Data.List Database.HDBC Database.HDBC.Sqlite3 System.Directory>
Author: casperOne, 2010-08-19

2 answers

GHCi busca su archivo de configuración en

  • ~/.ghc/ghci.conf en sistemas tipo Unix.

  • %APPDATA%\ghc\ghci.conf en Windows.

La sintaxis del archivo de configuración es simple: es una lista de comandos GHCi para ejecutar al inicio.

Por ejemplo, su {[6] } podría contener:

import Control.Applicative
import Data.Char
import Data.List

:set prompt "> "

La última línea establece el prompt en "> " para que no muestre todos los módulos que importó en la línea de comandos.

Ahora puedes ponerte a trabajar bien lejos:

GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
> toLower <$> "Hello, world!"
"hello, world!"
> 

Además, si decides que no quieres Data.Char en medio de una sesión de GHCi, puedes eliminarla con:

:m -Data.Char

Y si decides que no quieres nada más que Preludio durante una sesión:

:m
 46
Author: Joey Adams,
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
2013-01-04 04:00:29

GHC también cargará cualquier archivo .ghci que encuentre en el directorio actual. Es muy útil hacer la configuración por proyecto de GHCi.

Este es un ejemplo de un proyecto en el que trabajo:

:set -isrc:dist/build/autogen
:set -hide-package mtl

El primero está ahí para asegurarse de que los módulos generados por Cabal son fáciles de importar. El segundo oculta mtl ya que este proyecto en particular usa transformers.

 21
Author: Magnus,
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
2010-08-19 11:45:23