Этим файлом мы описали библиотеку с именем pinocchio, версия 1.1.1, она использует версию cabal
не ниже 1.2. Библиотека выпущена под лицензией BSD3. Файл с лицензией находится в текущей директо-
рии под именем LICENSE
. Автор библиотеки Mister Geppetto. Подробнее узнать о библиотеке можно на еёдомашней странице http://
pinocchio. sourceforge. net/. Атрибут Category указывает на широкую отрасльзнаний, к которой принадлежит наша библиотека. В данном случае мы описываем библиотеку для построе-
ния роботов из дерева, об этом мы пишем в атрибуте Synopsis
(краткое описание), поэтому наша библиоте-ка принадлежит к категории искусственный интеллект или сокращённо AI
. Последний атрибут Build-Typeуказывает на тип сборки пакета. Мы будем пользоваться значением Simple
, который соответствует сборке спомощью простейшего файла Setup.
hs, который мы рассмотрели в предыдущем разделе.После описания пакета, идёт слово Library
, ведь мы создаём библиотеку. Далее в атрибуте Build-Depends
мы указываем зависимости для нашего пакета. Здесь мы перечисляем все пакеты, которые мы используем в
своей библиотеке. В данном случае мы пользовались лишь стандартной библиотекой base. В атрибуте hs-
source-
dirs мы указываем, где искать директорию с исходным кодом библиотеки. Затем мы указываем тривнешних модуля, они будут доступны пользователю после установки библиотеки (атрибут Exposed-Modules
),и внутренние скрытые модули (атрибут Other-Modules
).Создаём исполняемые программы
Типичный файл .
cabal для исполняемой программы:Name:
micro
Version:
0.0
Cabal-Version:
>=
1.2License:
BSD3
Author:
Tony Reeds
Synopsis:
Small
programming languageBuild-Type:
Simple
Executable
micro266 | Глава 18: Средства разработки
Build-Depends:
base, parsec
Main-Is:
Main.
hsHs-Source-Dirs:
microExecutable
micro-replMain-Is:
Main.
hsBuild-Depends:
base, parsec
Hs-Source-Dirs:
replOther-Modules:
Utils
В этом файле мы описываем две программы. Компилятор языка и интерпретатор языка micro. Если срав-
нить этот файл с файлом для библиотеки, то мы заметим лишь один новый атрибут. Это Main-Is
. Он указыва-ет в каком модуле содержится функция main. После установки этого пакета будут созданы два исполняемых
файла. С именами micro и micro-
repl.Установка пакета
Пакеты устанавливаются с помощью команды install. Необходимо перейти в директорию пакета, ту,
в которой находятся два служебных файла (.
cabal и Setup. hs) и директория с исходниками, и запуститькоманду:
cabal install
Если мы нигде не ошиблись в описании пакета, не перепутали табуляцию с пробелами при отступах, или
указали без ошибок все зависимости, то пакет успешно установится. Если это библиотека, то мы сможем
подключать экспортируемые ей модули в любом другом модуле, просто указав их в директиве import
. Приэтом нам уже не важно, где находятся модули библиотеки. Мы имеем возможность импортировать их из
любого модуля. Если же пакет был исполняемой программой, будут созданы бинарные файлы программ. В
конце cabal сообщит нам куда он их положил.
Иногда возникают проблемы с пакетами, которые генерируют исполняемые файлы, а затем с их помощью
устанавливают другие пакеты. Проблема возникает из-за того, что cabal может положить бинарный файл в
директорию, которая не видна следующим программам, которые хотят продолжить установку. В этом слу-
чае необходимо либо переложить созданные бинарные файлы в директорию, которая будет им видна, или
добавить директорию с новыми бинарными файлами в PATH
(под UNIX, Linux). Переменная операционнойсистемы PATH содержит список всех путей, в которых система ищет исполняемые программы, если путь не
указан явно. Посмотреть содержание PATH
можно, вызвав:$ echo $PATH
Появится строка директорий, которые записаны через двоеточие. Для того чтобы добавить директорию
/data/
dir в PATH необходимо написать:$ PATH=$PATH:/data/dir
Эта команда добавит директорию в PATH
для текущей сессии в терминале, если мы хотим записать еёнасовсем, мы добавим эту команду в специальный скрытый файл .
bashrc, он находится в домашней дирек-тории пользователя. Под Windows добавить директорию в PATH
можно с помощью графического интерфейса.Кликните правой кнопкой мыши на иконку My Computer
(Мой Компьютер), в появившемся меню выбери-те вкладку Properties
(Свойства). Появится окно System Properties (Свойства системы), в нём выберитевкладку Advanced
и там нажмите на кнопку Environment variables (Переменные среды). И в этом окне будетстрока Path
, её мы и хотим отредактировать, добавив необходимые нам пути.Давайте потренируемся и создадим библиотеку и исполняемую программу. Создадим библиотеку, кото-