Главная » Haskell

Модуль Ord

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

предназначен для разгрузки стандартного модуля Prelude. В него вынесено определение класса Ord (см. стр. 121) и определения нескольких десятков экземпляров для этого класса. Использование:

import  Data.Ord

Класс Ord определяет класс типов, в которых имеет смысл отношение порядка. Соответственно, определение этого класса выглядит следующим образом:

Читать »

Экземпляры класса Logic

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

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

В этом классе определены классические  методы из алгебры логики, а также несколько дополнительных, вроде импликации и эквивалентности (при желании, конечно, можно было добавить в определение этого класса и методы для вычисления таких операций, как «стрелка Пирса» или «штрих Шеффера»). Само собой разумеется, что все эти методы применимы к булевским значениям истинности, которые в языке Haskell представляются типом Bool. Для того чтобы можно было применять такие методы на значениях типа Bool, необходимо определить его экземпляром  класса Logic:

Читать »

Модуль Complex

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

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

import  Data.Complex

Тип: Complex

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

Читать »

Автоматическое построение экземпляров

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

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

Читать »

Модуль Chan

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

содержит описания программных сущностей,  которые  позволяют работать с FIFO-каналами, не связанными с  конкретной  операционной системой. Данный модуль является  «подчинённым» по отношению к модулю Concurrent,  а потому его импорт должен выглядеть следующим образом:

Читать »

Модуль List

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

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

Читать »

Модуль Weak

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

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

Читать »

Модуль Monoid

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

Служебный модуль Monoid содержит определение класса Monoid и нескольких вспомогательных типов для работы со стандартными типами данных. Этот модуль разработан в соответствии с положениями работы [10]. Использование:

import  Monoid

Главная программная сущность этого модуля — класс Monoid, представляющий собой описание одного из важнейших понятий теории категорий — моноида.  Класс:  Monoid

Читать »

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

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

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

Читать »

Обработка исключений

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

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

Читать »

Модуль Random

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

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

import System.Random

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

Читать »

Модуль Types

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

В модуле Types описываются проекции некоторых типов языка C в соответствующие типы языка Haskell. Использование:

import  Foreign.C.Types

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

Читать »

Модуль Mem

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

В  модуле Mem  определяется  единственная функция,  которая  используется для воздействия на систему управления памяти в языке Haskell. Использование модуля:

import System.Mem

Функция: performGC

Описание: немедленно при вызове запускает процесс сборки мусора.

Читать »

Модуль String

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

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

import  Foreign.C.String

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

Читать »

Модуль IArray

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

В модуле IArray описывается общий интерфейс к произвольным  массивам, а потому к этому интерфейсу добавлен набор утилитарных функций для работы с произвольным массивом. Эти функции обобщают одноимённые функции из головного модуля Array  (см. раздел 8.1.). Также в этом модуле обобщается и сам алгебраический тип данных, представляющий массивы. Поэтому при подключении модуля IArray

Читать »