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

0

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

import Data.Maybe

Соответственно, в рассматриваемый модуль вынесены определения: алгебраического типа данных Maybe (см. стр. 109) и функции maybe (см. стр. 145)

Также  в  модуле Maybe определены  экземпляры типа  Maybe для  следующих классов: Alternative,  Applicative, Foldable,  Functor,  FunctorM, Monad, MonadFix,  MonadPlus,  Traversable, Typeable1, Data, Eq, Ord, Read и Show. Функция: isJust

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

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

isJust :: Maybe a  ->  Bool isJust  Nothing  = False isJust _             =  True

Функция: isNothing

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

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

isNothing :: Maybe a  ->  Bool isNothing  Nothing  = True isNothing _             =  False

Функция: fromJust

Описание: разворачивает контейнер Maybe, возвращая  значение, обёрнутое конструктором Just.  Не может работать со значениями типа Nothing.

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

fromJust :: Maybe a ->  a

fromJust Nothing    = error  "Maybe.fromJust:  Nothing" fromJust (Just  x)  = x

Функция: fromMaybe

Описание: вариант функции fromJust,  который может вернуть переданное в качестве первого аргумента значение по умолчанию в случае, если второй аргумент равен Nothing.

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

fromMaybe :: a ->  Maybe a ->  a fromMaybe d x  =  case x  of

Nothing  ->  d Just  v    ->  v

Функция: listToMaybe

Описание: конвертирует  список в значение типа Maybe. Если список  пуст, возвращает значение Nothing. Если же список не пуст, возвращается голова списка, обёрнутая конструктором Just.

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

listToMaybe ::  [a]  ->  Maybe a listToMaybe []        =  Nothing listToMaybe (a:_)  = Just  a

Функция: maybeToList

Описание: обратная функция к функции  listToMaybe.   Преобразует  значение

Maybe в список.

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

maybeToList  ::  Maybe a ->  [a] maybeToList  Nothing   = [] maybeToList  (Just  x) = [x]

Функция: catMaybes

Описание: преобразует  список значений типа  Maybe в список. Все  значения

Nothing игнорируются.

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

catMaybes :: [Maybe  a]  ->  [a] catMaybes ls  = [x | Just  x  < ls]

Функция: mapMaybe

Описание: применяет заданную функцию, возвращающую значение типа Maybe

к списку. Результирующий список содержит простые значения.

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

mapMaybe  :: (a  ->  Maybe b)  ->  [a]  ->  [b] mapMaybe  _ []     =  []

mapMaybe  f (x:xs) = let rs =  mapMaybe  f xs in  case f x  of

Nothing  ->  rs Just  r    ->  r:rs

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

По теме:

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