Главная » Haskell

Модуль Utils

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

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

Читать »

Контекст  и прикладные функции

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

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

Читать »

Модуль MVar

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

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

«подчинённым» по отношению к модулю Concurrent, поэтому его импорт выглядит следующим образом:

Читать »

Модуль Exception

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

 содержит описания программных сущностей, предназначенных для работы с исключениями. Отчасти определения в этом модуле дублируют такие же определение из стандартного модуля Prelude. Импорт же модуля осуществляется следующим образом:

import Control.Exception

Читать »

Технология сопоставления с образцами

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

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

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

Читать »

Модуль Array позволяющих работать со строгими массивами

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

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

import Data.Array

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

Модуль Maybe

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

В модуле Maybe дублируются описания типа Maybe и функции для его обработки. Данный модуль создан в экспериментальном порядке в целях постепенной разгрузки стандартного модуля Prelude. Некоторые определённые в модуле Maybe программные  сущности  определены и в модуле Prelude. Использование:

Читать »

Бесточечная нотация

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

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

Читать »

Модуль Char

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

отчасти дублирует описания программных сущностей для представления и работы с символами. Данный модуль создан в экспериментальном порядке в целях постепенной разгрузки стандартного модуля Prelude. Большинство определённых в модуле Char программных сущностей определены и в мо-

Читать »

Модуль ST описание реализации изменяемых массивов

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

 содержит описание реализации изменяемых массивов  (ограниченных и неограниченных) для монады ST  (преобразователь  монады State  — см. подраздел 7.5.3.). Использование этого модуля выглядит так:

import  Data.Array.ST

Этот модуль также импортирует для работы своих функций модуль MArray (см. подраздел 8.1.5.), поэтому при использовании рассматриваемого модуля импортировать модуль MArray нет необходимости.

Читать »

Накапливающий  параметр и хвостовая рекурсия

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

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

Читать »

Модуль Array (выделение памяти, маршализация)

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

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

Модуль Storable интерфейс для маршализации

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

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

Читать »

Модуль Read

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

В модуле Read определены  программные сущности, позволяющие  преобразовывать строки в значения произвольных типов. Этот  модуль, как и многие иные в стандартной поставке, является экспериментальным, созданным с целью разгрузки  стандартного модуля  Prelude  от программных сущностей. Правда, необходимо отметить,  что  в этом модуле для компилятора  GHC имеются расширенные  возможности по использованию функций синтаксического анализа. В частности, создана улучшенная версия класса Read (см. стр. 121), которая позволяет производить  более эффективный синтаксический анализ.

Читать »

Модуль C

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

Модуль, который включает в себя при помощи реимпорта функциональность трёх нижеследующих модулей, описывающих  специфические функции для работы в рамках подхода FFI (Foreign Function Interface — интерфейс  к внешним функциям) с внешними  программами, написанными на языке  программирования C. Использование:

Читать »