Главная » Haskell » Модуль Chan

0

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

import Control.Concurrent.Chan

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

Главным типом данных, который используется для создания и работы с каналами, является алгебраический тип данных Chan, который к тому же является абстрактным и определённым внутри транслятора. Этот тип имеет только один экземпляр класса Typeable1. Однако наиболее интересным  представляется  набор функций, определённых в этом модуле.

Функция: newChan

Описание: создаёт и возвращает новый канал.

Определение:

newChan  :: IO (Chan a)

Функция определена в виде примитива.

Функция: writeChan

Описание: записывает некоторое значение в заданный канал.

Определение:

writeChan  :: Chan a ->  a ->  IO ()

Функция определена в виде примитива.

Функция: readChan

Описание: считывает и возвращает очередное значение из канала.

Определение:

readChan :: Chan a ->  IO a

Функция определена в виде примитива.

Функция: dupChan

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

Определение:

dupChan  :: Chan a ->  IO (Chan a)

Функция определена в виде примитива.

Функция: unGetChan

Описание: записывает некоторое значение назад в канал так, что оно становится следующим, которое можно считать из канала.

Определение:

unGetChan :: Chan a ->  a ->  IO ()

Функция определена в виде примитива.

Функция: isEmptyChan

Описание: возвращает значение True, если заданный канал пуст.

Определение:

isEmptyChan :: Chan a ->  IO Bool

Функция определена в виде примитива.

Функция: getChanContents

Описание: возвращает ленивый список всех значений, содержащихся в заданном канале. Является аналогом функции hGetContents из модуля IO (см. стр. 494). Определение:

getChanContents  :: Chan a ->  IO [a]

Функция определена в виде примитива.

Функция: writeList2Chan

Описание: записывает заданный список в канал.

Определение:

writeList2Chan :: Chan a ->  [a] ->  IO ()

Функция определена в виде примитива.

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

По теме:

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