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

Когда я использую GHCi, я почти всегда импортирую Control.Applicative, Data.List и т. д. Есть ли способ настроить GHCi для автоматического импорта этих модулей.

Кроме того, после их импорта, как сделать так, чтобы подсказка не была безумно длинной?

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

person Joey Adams    schedule 19.08.2010    source источник


Ответы (2)


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

и если вы решите, что вам не нужно ничего, кроме прелюдии во время сеанса:

:m
person Joey Adams    schedule 19.08.2010
comment
Кажется, это никак не влияет на мою установку Win. Похоже, ghci.conf не читается. у меня тоже не было этого файла по умолчанию - person Ghita; 15.07.2014
comment
в windows 7 путь: %APPDATA%\Roaming\ghc - person miro; 13.01.2015
comment
@fjordrunner: В моей системе %APPDATA% расширяется до C:\Users\ja\AppData\Roaming. - person Joey Adams; 14.01.2015

GHC также загрузит любой .ghci файл, который найдет в текущем каталоге. Очень полезно выполнять настройку GHCi для каждого проекта.

Это пример из проекта, над которым я работаю:

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

Во-первых, убедиться, что модули, сгенерированные Cabal, легко импортировать. Второй скрывает mtl, так как этот конкретный проект использует transformers.

person Magnus    schedule 19.08.2010
comment
Как сделать так, чтобы это происходило в Windows? Я не могу назвать файл .ghci, и, похоже, он игнорирует настройки в локальном файле ghci.conf. - person crockeea; 21.07.2015
comment
У меня есть файл .ghci для работы в Windows. Однако Explorer также не позволил мне переименовать файл в .ghci. Найдено 2 способа обойти это: Использование Блокнота: В окне "Сохранить как" -> Измените Save as type на All files (*.*), иначе будет добавлено расширение .txt -> Назовите файл .ghci и нажмите "Сохранить" < b>ИЛИ Используя командную строку: перейдите к папке проекта Haskell в проводнике -> введите cmd в адресной строке этого окна и нажмите Enter. Это откроет командную строку, начиная с этой папки -> mv somefile.ghci .ghci - person jhr; 30.03.2016