37 votes

Comment configurer GHCi pour importer automatiquement des modules

Quand j'utilise GHCi, je finis presque toujours par importer Control.Applicative , Data.List , etc. Existe-t-il un moyen de configurer GHCi pour importer automatiquement ces modules?

En outre, après les avoir importés, comment éviter que l'invite ne soit incroyablement longue?

 Prelude Control.Applicative Data.List Database.HDBC Database.HDBC.Sqlite3 System.Directory>
 

48voto

Joey Adams Points 13049

GHCi regarde à son fichier de configuration

  • ~/.ghc/ghci.conf sur les systèmes de type Unix.

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

Le fichier de configuration, la syntaxe est simple: c'est une liste de GHCi commandes à exécuter au démarrage.

Par exemple, votre ghci.conf pourrait contenir:

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

:set prompt "> "

La dernière ligne définit l'invite à "> " afin de ne pas montrer tous les modules que vous avez importé sur la ligne de commande.

Maintenant, vous pouvez commencer à travailler immédiatement:

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!"
> 

Aussi, si vous décidez que vous ne voulez pas Data.Char dans le milieu d'un GHCi session, vous pouvez le supprimer avec:

:m -Data.Char

et si vous décidez que vous ne voulez pas rien, mais en Prélude au cours d'une session:

:m

21voto

Magnus Points 1769

GHC chargera également tout fichier .ghci trouvé dans le répertoire actuel. Il est très utile de faire la configuration de GHCi par projet.

Voici un exemple tiré d'un projet sur lequel je travaille:

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

Le premier est là pour vous assurer que les modules générés par Cabal sont faciles à importer. La seconde cache mtl puisque ce projet utilise transformers .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X