Главная » Статьи для тега "функции"

Модуль HashTable

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

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

import  Data.HashTable

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

Тип: HashTable

Читать »

Модуль Map

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

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

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

Читать »

Модуль Sequence

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

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

Читать »

Модуль ByteString

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

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

Читать »

Модуль Set

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

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

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

Читать »

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

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

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

Читать »

Типы функций

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

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

Читать »

Ввод и вывод

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

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

Читать »

Модуль Fixed

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

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

Читать »

Модуль IntMap

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

В модуле IntMap содержится описание такой важной идиомы в программировании, как отображения. Реализация отображений достаточно эффективна и ос-

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

Читать »

Модуль Monad

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

Модуль  Monad содержит  дополнительные расширения  функциональности языка Haskell, которая используется для работы с монадами. Использование модуля:

import  Control.Monad

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

Читать »

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

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

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

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

Читать »

Модуль List

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

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

Читать »

Модуль Weak

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

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

Читать »

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

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

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

Читать »