How to configure GHCi to automatically import modu

2019-01-31 12:10发布

When I use GHCi, I almost always end up importing Control.Applicative, Data.List, etc. . Is there a way to configure GHCi to automatically import those modules.

Also, after importing them, how do I keep the prompt from being insanely long?

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

标签: haskell ghci
2条回答
SAY GOODBYE
2楼-- · 2019-01-31 12:36

GHC will also load any .ghci file it finds in the current directory. It's very useful to do per-project configuration of GHCi.

This is an example from a project I work on:

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

The first is there to make sure that the modules generated by Cabal are easy to import. The second hides mtl since this particular project uses transformers.

查看更多
Emotional °昔
3楼-- · 2019-01-31 12:44

GHCi looks for its configuration file at

  • ~/.ghc/ghci.conf on Unix-like systems.

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

The configuration file syntax is simple: it's a list of GHCi commands to execute on startup.

For example, your ghci.conf could contain:

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

:set prompt "> "

The last line sets the prompt to "> " so it won't show all the modules you imported on the command line.

Now you can get to work right away:

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

Also, if you decide you don't want Data.Char in the middle of a GHCi session, you can remove it with:

:m -Data.Char

and if you decide you don't want anything but Prelude during a session:

:m
查看更多
登录 后发表回答