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

-- | This documentation includes two blocks of code:

--

-- @

--

f x = x + x

--

g x = x

-- @

--

-- >

g x = x * 42

В первом варианте мы заключаем блок кода в окружение ...@@. Так мы можем выделить целый кусок

кода. Для выделения одной строки мы можем воспользоваться знаком > .

Примеры вычисления в интерпретаторе

В Haddock мы можем привести пример вычисления выражения в интерпретаторе. Это делается с помощью

тройного символа > :

-- | Two examples are given bellow:

--

-- >>> 2+3

-- 5

--

-- >>> print 1 >> print 2

-- 1

-- 2

Строки, которые идут сразу за строкой с символом >>> помечаются как результат выполнения выражения

в интерпретаторе.

Имена определений

Для того чтобы выделить имя любого определения, будь то функция, тип или класс, необходимо заклю-

чить его в ординарные кавычки, как в ’T’. При этом Haddock установит ссылку к определению и подсветит

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

имя, то есть с приставкой имени модуля, например функция fun, определённая в модуле M, имеет полное

имя M. fun, тогда в комментариях мы обозначаем её ’M.fun’.

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

don’t, isn’t. Перед такими вхождениями ординарных кавычек можно не писать обратный слэш. Haddock сумеет

отличить их от идентификатора.

Курсив и моноширинный шрифт

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

шрифтом, он заключается в окружение ...@@.

Модули

Для обозначения модулей используются двойные кавычки, как в

-- | This is a reference to the ”Foo” module.

Создание документации с помощью Haddock | 273

Списки

Список без нумерации обозначается с помощью звёздочек:

-- | This is a bulleted list:

--

--

* first item

--

--

* second item

Пронумерованный список, обозначается символами (n) или n. (n с точкой), где n – некоторое целое

число:

-- | This is an enumerated list:

--

--

(1) first item

--

--

2. second item

Список определений

Определения обозначаются квадратными скобками, например комментарий:

-- | This is a definition list:

--

--

[@foo@] The description of @foo@.

--

--

[@bar@] The description of @bar@.

в документации будет выглядеть так:

foo The description of foo.

bar The description of bar.

Для выделения текста моноширинным шрифтом мы воспользовались окружением ...@@.

URL

Ссылки на сайты включаются с помощью окружения <...> .

Ссылки внутри модуля

Для того чтобы сослаться на какой-нибудь текст внутри модуля, его необходимо отметить ссылкой. Для

этого мы помещаем в том месте, на которое мы хотим сослаться, запись #label#, где label – это идентифика-

тор ссылки. Теперь мы можем сослаться на это место из другого модуля с помощью записи ” module#label”,

где module – имя модуля, в котором находится ссылка label.

18.3 Краткое содержание

В этой главе мы познакомились с основными элементами арсенала разработчика программ. Мы научи-

лись создавать библиотеки и документировать их.

18.4 Упражнения

Вспомните один из примеров и превратите его в библиотеку. Например, напишите библиотеку для нату-

ральных чисел Пеано.

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

Глава 19

Ориентируемся по карте

Рассмотрим задачу поиска маршрута на карте. У нас есть карта метро и нам нужно проложить маршрут

от одной станции к другой. Карта метро~– это граф, узлы обозначают станции, а рёбра соединяют соседние

станции. Предположим, что мы знаем расстояния между всеми станциями и нам надо найти кратчайший

путь от станции площадь Баха до станции Таинственный лес (рис. 19.1).

Космодром

Запад

Таинственный

лес

Призрак

Инева

ул.Булычёва

Троллев мост

Тилль

Сириус

Звезда

Север

Лао

Юг

Де

пл.Баха

Крест

пл.Шекспира

Дно болота

Родник

Восток

Рис. 19.1: Схема метрополитена

Давайте переведём этот рисунок на Haskell. Сначала опишем имена линий и станций:

module Metro where

data Station = St Way Name

deriving (Show, Eq)

data Way = Blue | Black | Green | Red | Orange

deriving (Show, Eq)

data Name = Kosmodrom | UlBylichova | Zvezda

| Zapad | Ineva | De | Krest | Rodnik | Vostok

| Yug | Sirius | Til | TrollevMost | Prizrak | TainstvenniyLes

| DnoBolota | PlBakha | Lao | Sever

| PlShekspira

deriving (Show, Eq)

Предположим, что нам известны координаты каждой из станций. По ним мы можем вычислять расстояние

между станциями по прямой:

| 275

data Point = Point

{ px :: Double

, py :: Double

} deriving (Show, Eq)

place :: Name -> Point

place x = uncurry Point $ case x of

Kosmodrom

-> (-3,7)

UlBylichova

-> (-2,4)

Zvezda

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

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

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

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

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

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

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

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

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