Как настроить GHCI для автоматического импорта модулей
Вопрос
Когда я использую GHCI, я почти всегда заканчиваю тем, что импортирую Control.Applicative
, Data.List
, и т.д. . Есть ли способ настроить GHCI для автоматического импорта этих модулей.
Кроме того, после их импорта, как мне нельзя было безумно долгое время?
Prelude Control.Applicative Data.List Database.HDBC Database.HDBC.Sqlite3 System.Directory>
Решение
GHCI ищет файл конфигурации на
~/.ghc/ghci.conf
на Unix-подобных системах.%APPDATA%\ghc\ghci.conf
в окнах.
Синтаксис файла конфигурации прост: это список команд 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
И если вы решите, что не хотите ничего, кроме прелюдии во время сеанса:
:m
Другие советы
GHC также загрузит любой .ghci
файл находит в текущем каталоге. Это очень полезно для конфигурации GHCI для каждого проекта.
Это пример из проекта, над которым я работаю:
:set -isrc:dist/build/autogen
:set -hide-package mtl
Первое - это, чтобы убедиться, что модули, сгенерированные CABAL, легко импортировать. Второй прята mtl
Поскольку этот конкретный проект использует transformers
.