ghc-
pkg unregister имя-библиотекиНапример так мы можем удалить только что установленную библиотеку hello:
$ ghc-pkg unregister hello
Репозиторий пакетов Hackage
Если у нас подключен интернет, то мы можем воспользоваться наследием сообщества Haskell и уста-
новить пакет с Hackage
. Там расположено много-много-много пакетов. Любой разработчик Haskell можетдобавить свой пакет на Hackage
. Посмотреть на пакеты можно на сайте этого репозитория:http://hackage.haskell.org
Если для вашей задачи необходимо выполнить какую-нибудь довольно общую задачу, например написать
тип красно-чёрных деревьев или построить парсер или возможно вам нужен веб-сервер, поищите этот пакет
на Hackage
, он там наверняка окажется, ещё и в нескольких вариантах.Для установки пакета с Hackage
нужно просто написатьcabal install имя-пакета
Возможно нам нужен очень новый пакет, который был только что залит автором на Hackage
. Тогда вы-полняем:
cabal update
Происходит обновление данных о загруженных на Hackage
. Что хорошо, вы можете загрузить исходникииз Hackage
, например у вас никак не получается написать пакет, который устанавливался бы без ошибок.Просто загрузим исходники какого-нибудь пакета из Hackage
и посмотрим на пример рабочего пакета.Пакеты | 269
Дополнительные атрибуты пакета
В файле .
cabal также часто указывают такие атрибуты как:Maintainer
Поле содержит адрес электронной почты технической поддержкиStability
Статус версии библиотеки (стабильная, экспериментальная, нестабильная).Description
Подробное описание назначения пакета. Оно помещается на главную страницу пакета в доку-ментации.
Extra-Source-Files
В этом поле можно через пробел указать дополнительные файлы, включаемые в пакет.Это могут быть примеры использования, описание в формате PDF или хроника изменений и другие
служебные файлы.
License-file
Путь к файлу с лицензией.ghc-options
Флаги компиляции для GHC. Если в нашей библиотеке мы активно пользуемся продвинуты-ми прагмами оптимизации, необходимо сообщить об этом компилятору пользователя. Например, мы
можем написать в этом атрибуте -O
или -O2.Установка библиотек для профилирования
Помните когда-то мы занимались профилированием? Это было в главе, посвящённой устройству GHC.
Мы включали флаг -
prof и всё шло гладко. Там мы профилировали код, в котором участвовали лишьстандартные библиотеки из пакета base, такие как Prelude
. Но если мы попробуем профилировать код скакими-нибудь другими библиотеками, установленными с помощью cabal, GHC возмутится и скажет, что
для профилирования не хватает специальной версии библиотеки имярек
. Для того чтобы иметь возможностьпрофилировать код, в котором участвуют другие библиотеки необходимо установить их с возможностью
профилирования. Это делается при установке с помощью специального флага –“enable-library-profiling
или –“enable-executable-profiling (если мы устанавливаем исполняемое приложение):
$ cabal install имярек --reinstall --enable-library-profiling
Библиотека будет установлена в двух экземплярах: для исполнения и профилирования. Возможно биб-
лиотека имярек
потребует переустановки некоторых библиотек, от которых она зависит. Повторяем эту про-цедуру для этих библиотек и возвращаемся к исходной библиотеке. К сожалению, избежать переустановки
библиотек нельзя. Но мы можем сделать так, чтобы все будущие библиотеки устанавливались с возмож-
ностью профилирования. Для этого необходимо отредактировать файл настроек программы cabal. Ищем
директори, в которой cabal хранит свои служебные файлы. Если вы пользуетесь Linux, то скорее всего это
скрытая директория .
cabal в вашей домашней директории. Если вы пользуетесь Windows, положение ди-ректории зависит от версии системы. Но ничего, узнать её положение можно, выполнив в ghci
Prelude> :
m System.DirectoryPrelude System.Directory>
getAppUserDataDirectory ”cabal”Присмотритесь к этой директории в ней вы найдёте много полезных данных. В ней находятся испол-
няемые программы, скомпилированные библиотеки, а также исходный код библиотек. В этой директории
находится и файл config с настройками для cabal. Ищем строчку с полем library-
profiling: False. Меня-ем значение на True
и раскомментируем эту строчку, если она закомментирована. После этого cabal installбудет устанавливать библиотеки для профилирования. На первых порах это вызовет массу неудобств из-за
необходимости переустановки многих библиотек.
18.2 Создание документации с помощью Haddock
Если мы зайдём на Hackage, то там мы увидим длинный список пакетов, отсортированных по категориям.
К какой категории какой пакет относится мы указываем в .
cabal-файле в атрибуте Category. Далее рядом с