Читаем Учебник по Haskell полностью

рая выводит на экран Hello World. Создадим директорию hello, и в ней создадим директорию src. Эта ди-

ректория будет содержать исходный код. Главный модуль библиотеки экспортирует функцию приветствия:

module Hello where

import Utility.Hello(hello)

import Utility.World(world)

helloWorld = hello ++ ”, ” ++ world ++ ”!”

Главный модуль программы Main. hs определяет функцию main, которая выводит текст приветствия на

экран:

Пакеты | 267

module Main where

import Hello

main = print helloWorld

У нас будет два внутренних модуля, каждый из которых определяет синоним для одного слова. Мы по-

местим их в папку Utility. Это модуль Utility.Hello

module Utility.Hello where

hello = ”Hello”

И модуль Utility.World:

module Utility.World where

world = ”World”

Исходники готовы, теперь приступим к описанию пакета. Создадим в корневой директории пакета файл

hello. cabal.

Name:

hello

Version:

1.0

Cabal-Version:

>= 1.2

License:

BSD3

Author:

Anton

Synopsis:

Little example of cabal usage

Category:

Example

Build-Type:

Simple

Library

Build-Depends: base == 4.*

Hs-Source-Dirs: src/

Exposed-modules:

Hello

Other-Modules:

Utility.Hello

Utility.World

Executable hello

Build-Depends: base == 4.*

Main-Is: Main. hs

Hs-Source-Dirs: src/

В этом файле мы описали библиотеку и программу. В строке base == 4.* мы указали версию пакета base.

Запись 4.* означает любая версия, которая начинается с четвёрки. Осталось только поместить в корневую

директорию пакета файл Setup. hs.

import Distribution.Simple

main = defaultMain

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

anton@anton-desktop:~/haskell-notes/code/ch-17/hello$ cabal install

Resolving dependencies...

Configuring hello-1.0...

Preprocessing library hello-1.0...

Preprocessing executables for hello-1.0...

Building hello-1.0...

[1 of 3] Compiling Utility.World

( src/Utility/World. hs, dist/build/Utility/World. o )

[2 of 3] Compiling Utility.Hello

( src/Utility/Hello. hs, dist/build/Utility/Hello. o )

[3 of 3] Compiling Hello

( src/Hello. hs, dist/build/Hello. o )

Registering hello-1.0...

[1 of 4] Compiling Utility.World

( src/Utility/World. hs, dist/build/hello/hello-tmp/Utility/World. o )

[2 of 4] Compiling Utility.Hello

( src/Utility/Hello. hs, dist/build/hello/hello-tmp/Utility/Hello. o )

[3 of 4] Compiling Hello

( src/Hello. hs, dist/build/hello/hello-tmp/Hello. o )

[4 of 4] Compiling Main

( src/Main. hs, dist/build/hello/hello-tmp/Main. o )

Linking dist/build/hello/hello ...

Installing library in /home/anton/. cabal/lib/hello-1.0/ghc-7.4. 1

Installing executable(s) in /home/anton/. cabal/bin

Registering hello-1.0...

268 | Глава 18: Средства разработки

Мы видим сообщения о процессе установки. После установки в текущей директории пакета появилась

директория dist, в которую были помещены скомпилированные файлы библиотеки. В последних строках

cabal сообщил нам о том, что он установил библиотеку в директорию:

Installing library in /home/anton/. cabal/lib/hello-1.0/ghc-7.4. 1

и исполняемый файл в директорию:

Installing executable(s) in /home/anton/. cabal/bin

С помощью различных флагов мы можем контролировать процесс установки пакета. Назначать дополни-

тельные директории, указывать куда поместить скомпилированные файлы. Подробно об этом можно почи-

тать в справке, выполнив в командной строке одну из команд:

cabal --help

cabal install --help

Если у вас не получилось сразу установить пакет не отчаивайтесь и почитайте сообщения об ошибках

из cabal, он информативно жалуется о забытых зависимостях и неспособности правильно прочитать файл с

описанием пакета.

Удаление библиотеки

Установленные с помощью cabal файлы видны из любого модуля. Имена модулей регистрируются гло-

бально. Если нам захочется установить библиотеку с уже зарегистрированным именем, произойдёт хаос.

Возможно прежняя библиотека нам уже не нужна. Как нам удалить её? Посмотрим на решение для компи-

лятора ghc. Мы можем посмотреть список всех зарегистрированных в ghc библиотек с помощью команды:

$ ghc-pkg list

Cabal-1.8.0.6

array-0.3.0.1

base-4.2.0.2

...

...

Появится длинный список с именами библиотек. Для удаления одной из них мы можем выполнить ко-

манду:

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры