如何配置GHCi以自动导入模块

Joe*_*ams 37 haskell ghci

当我使用GHCI,我几乎总是结束了进口Control.Applicative,Data.List等等.有没有办法配置GHCi自动导入这些模块.

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

Prelude Control.Applicative Data.List Database.HDBC Database.HDBC.Sqlite3 System.Directory>
Run Code Online (Sandbox Code Playgroud)

Joe*_*ams 48

GHCi在其中查找其配置文件

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

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

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

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

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

:set prompt "> "
Run Code Online (Sandbox Code Playgroud)

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

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

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!"
> 
Run Code Online (Sandbox Code Playgroud)

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

:m -Data.Char
Run Code Online (Sandbox Code Playgroud)

如果您决定在会话期间除了Prelude之外不需要任何内容​​:

:m
Run Code Online (Sandbox Code Playgroud)


Mag*_*nus 21

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

这是我工作的项目的一个例子:

:set -isrc:dist/build/autogen
:set -hide-package mtl
Run Code Online (Sandbox Code Playgroud)

第一个是确保Cabal生成的模块易于导入.mtl自该特定项目使用以来的第二次隐藏transformers.