Как настроить GHCI для автоматического импорта модулей

StackOverflow https://stackoverflow.com/questions/3518619

  •  29-09-2019
  •  | 
  •  

Вопрос

Когда я использую 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top