43

当我使用 GHCi 时,我几乎总是会导入Control.Applicative,Data.List等。有没有办法配置 GHCi 以自动导入这些模块。

另外,在导入它们之后,如何防止提示过长?

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

2 回答 2

55

GHCi 在以下位置查找其配置文件

  • ~/.ghc/ghci.conf在类 Unix 系统上。

  • %APPDATA%\ghc\ghci.conf在 Windows 上。

配置文件语法很简单:它是启动时执行的 GHCi 命令列表。

例如,您ghci.conf可能包含:

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

:set prompt "> "

最后一行将提示设置为,"> "因此它不会显示您在命令行中导入的所有模块。

现在您可以立即开始工作:

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

此外,如果您决定不希望Data.Char在 GHCi 会话中使用,可以使用以下命令将其删除:

:m -Data.Char

如果您决定在会话期间除了 Prelude 什么都不想要:

:m
于 2010-08-19T04:08:50.190 回答
23

GHC 还将加载.ghci它在当前目录中找到的任何文件。对 GHCi 进行每个项目的配置非常有用。

这是我从事的一个项目的一个例子:

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

首先是确保 Cabal 生成的模块易于导入。第二个隐藏mtl,因为这个特定项目使用transformers.

于 2010-08-19T11:45:23.087 回答