Главная » Haskell

Синтаксис и идиомы языка

Добавлено Дата: 4 June, 2012 категория: Haskell

Функции

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

Читать »

Модуль Lex

Добавлено Дата: 4 June, 2012 категория: Haskell

является дополнительным модулем для проведения синтаксического анализа, в который вынесены функции непосредственного разбора входных строк на лексемы. В этом модуле также определён тип Lexeme (см. стр. 532), ко-

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

Читать »

Модуль StablePtr

Добавлено Дата: 4 June, 2012 категория: Haskell

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

Читать »

Модуль HashTable

Добавлено Дата: 4 June, 2012 категория: Haskell

содержит реализацию расширяемых хеш-таблиц, которые описаны в работе [12]. Использование:

import  Data.HashTable

Главным алгебраическим типом данных для представления хеш-таблиц является тип HashTable.

Тип: HashTable

Читать »

Модуль Map

Добавлено Дата: 4 June, 2012 категория: Haskell

представляет собой расширение модуля IntMap (см. раздел 8.15.), в котором все программные  сущности работают с ключами произвольного типа. Такие отображения получаются более общими, нежели отображения с целочисленными ключами.

Поскольку функции из этого модуля очень часто имеют  наименования такие же, как в стандартном модуле Prelude, равно как и в других модулях, обычно этот модуль импортируют квалифицированно:

Читать »

Модуль Locale

Добавлено Дата: 3 June, 2012 категория: Haskell

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

поддерживаются только для форматов времени и даты. Этот модуль используется в модуле Time (см. раздел 11.11.) для правильного преобразования времени в строку. Использование:

Читать »

Импорт сторонних модулей

Добавлено Дата: 3 June, 2012 категория: Haskell

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

Читать »

Модуль Sequence

Добавлено Дата: 3 June, 2012 категория: Haskell

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

Читать »

Модуль Base для определения программных сущностей в модулях IArray

Добавлено Дата: 3 June, 2012 категория: Haskell

Модуль   Base  содержит   описания  примитивов,  которые   используются для определения программных сущностей в модулях IArray (см. подраздел 8.1.3.) и MArray (см. подраздел 8.1.5.). Этот модуль входит в стандартную поставку, однако он не должен напрямую использоваться при разработке программного обеспечения.  Вместо  него необходимо подключать либо модуль IArray, либо модуль MArray.
Читать »

Модуль ByteString

Добавлено Дата: 2 June, 2012 категория: Haskell

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

Читать »

Модуль Set

Добавлено Дата: 2 June, 2012 категория: Haskell

представляет собой расширение модуля IntSet (см. раздел 8.16.), в котором все программные  сущности работают с ключами произвольного типа. Такие множества получаются более общими, нежели множества с целочисленными ключами.

Поскольку функции из этого модуля очень часто имеют  наименования такие же, как в стандартном модуле Prelude, равно как и в других модулях, обычно этот модуль импортируют квалифицированно:

Читать »

Пакет модулей System

Добавлено Дата: 1 June, 2012 категория: Haskell

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

Читать »

Модуль Concurrent

Добавлено Дата: 31 May, 2012 категория: Haskell

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

Читать »

Модуль MArray

Добавлено Дата: 31 May, 2012 категория: Haskell

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

import Data.Array.MArray

Типы, которые поддерживают описываемый в этом модуле интерфейс (класс), в свою очередь описаны в модулях IO (см. подраздел  8.1.4.),  ST  (см. подраздел 8.1.6.) и Storable (см. подраздел 8.1.7.).

Читать »

Типы функций

Добавлено Дата: 31 May, 2012 категория: Haskell

Необходимо отметить, что понимание функций в функциональном программировании достаточно серьёзно  отличается от их восприятия в императивных языках. Дело в том, что в рамках функциональной парадигмы функция является программной сущностью, которая  обладает типом, является объектом, над которым можно производить действия: во-первых,  передавать в другие функции в качестве фактического значения; а во-вторых, возвращать в качестве вычисленного значения. Такое положение вещей является прямым следствием из принятой модели типизации языка Haskell (статическая типизация Хиндли-Милнера), в рамках которой у функций имеются типы.

Читать »