Главная » Haskell » Сводная информация

0

Таким образом, перечисленные и описанные в предыдущих главах программные сущности являются тем, что предоставляет язык Haskell для работы на поприще создания программного  обеспечения. Действительно, в языке Haskell всего пять видов программных сущностей:

1)                        функции;

2)                        типы данных;

3)                        классы типов;

4)                        экземпляры классов;

5)                        модули.

Все объекты предметной области и отношения между  ними  выражаются при помощи перечисленных сущностей. Поэтому в качестве справочной информации о языке Haskell остаётся привести список зарезервированных ключевых слов и операций, которые сами по себе нее могут быть использованы в качестве идентификаторов программных сущностей, создаваемых разработчиком программы. Все такие зарезервированные идентификаторы сведены в следующие таблицы: первая перечисляет ключевые слова, вторая — зарезервированные символы операций соответственно.

Слово

Значение

Использование

as

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

Модули

case

Организация множественного ветвления вычислительного  процесса в зависимости от  значений какого-либо образца

Функции

class

Определение класса типов

Классы

data

Определение алгебраического типа данных

Типы

default

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

Типы

deriving

Указание для транслятора языка вывести экземпляры заданных классов для указанного типа самостоятельно

Типы

do

Выполнение последовательности монадических действий, связанных операциями (>>) или (>>=)

Функции

else

Определение альтернативного  потока вычислений в конструкции if-thenelse, то есть того потока, который вычисляется в случае ложности логического выражения if

Функции

if

Организация  двоичного  ветвления в зависимости от значения булевского выражения

Функции

import

Импорт определений из внешнего модуля

Модули

in

Отделение выражения в конструкции

let-in от локальных определений

Функции

Слово

Значение

Использование

infix

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

Функции

infixl

Определение приоритета  левоассоциативных бинарных операций

Функции

infixr

Определение  приоритета правоассоциативных бинарных операций

Функции

instance

Определение экземпляра класса

Экземпляры

let

Префиксное определение локальных функций, которое к тому же является выражением

Функции

module

Определение модуля и экспортируемых им программных сущностей

Модули

newtype

Определение изоморфного типа данных

Типы

of

Отделение альтернатив во  множественном ветлении case

Функции

qualified

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

Модули

then

Определение  потока    вычислений в условном выражении if-then-else для случая, если охраняющее условное выражение принимает истинное значение

Функции

type

Определение синонима типа

Типы

Слово

Значение

Использование

where

Используется для различных целей. Классы и экземпляры:  отделение перечислений сигнатур и определений методов от заголовка определения. Модули: отделение определений программных сущностей модуля от заголовка определения.

Функции:  постфиксное определение локальных функций, которое  не является выражением

К, М, Ф, Э

(_)

Маска  подстановки в образцах, которая символизирует произвольное значение образца, не  используемое в дальнейших вычислениях

Функции

В столбце «Использование»  данной таблицы указываются те  программные сущности, при работе с которыми используется то или иное ключевое слово. Эту информацию можно использовать для поиска описаний ключевых слов в предыдущих главах книги.

В следующей таблице перечислены зарезервированные символы и последовательности символов, которые используются для различных целей в языке Haskell. Все они используются при определениях функций, поэтому детально рассматриваются в главе 1..

Символы

Значение

(..)

Пропущенные значения в генераторах списков. Используется как  синтаксическая уловка для методов  класса  Enum

(:)

Конструктор  списка, создающий пару

(::)

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

Символы

Значение

(=)

Символ для записи определения функций, типов, и синонимов типов. Слева от него — идентификатор  определяемой сущности, слева  — описание

(\)

Определение безымянной функции в виде ?-терма

(|)

Символ для разделения выражений охраны в определениях функций и внутри альтернатив оператора case

(<-)

Сопоставление  с образцом в  монадическом действии, указанном в списке ключевого слова do

(->)

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

1)                        В  сигнатурах  типов  разделяет типы  операндов и результата функции.

2)                        В безымянных ?-термах заменяет точку (.) из математической нотации.

3)                        В операторе множественного  ветвления case используется для указания  ветви вычислений в зависимости от значения условного выражения

(@)

Связывает образец как единое целое и его внутреннюю структуру (именованный образец)

(~)

Определяет ленивый образец

(=>)

Разграничивает контекст и тип в сигнатурах типов программных сущностей

Кроме того, в идентификаторах операций нельзя использовать скобки: обычные (круглые) — «(» и «)», квадратные — «[» и «]», а также фигурные — «{» и «}». Все эти скобки непосредственно используются в синтаксисе языка Haskell.

Ну и наконец, необходимо отметить, что в языке Haskell имеется одно ограничение на имена идентификаторов,  вернее даже, — соглашение об именовании программных сущностей, которое входит в синтаксис языка. Это соглашение гласит, что имена функций должны всегда начинаться со строчной буквы, а имена типов, классов и модулей  — с заглавной (экземпляры классов имён не имеют). Нарушение данного соглашения будет вести к синтаксическим ошибкам.

Часть II.

Источник: Душкин Р. В., Справочник по языку Haskell. М.: ДМК Пресс, 2008. 544 с., ил.

По теме:

  • Комментарии