|
module Maybe( isJust, isNothing, fromJust, fromMaybe, listToMaybe, maybeToList, catMaybes, mapMaybe, -- ...и то, что экспортирует Prelude Maybe(Nothing, Just), maybe ) where isJust, isNothing :: Maybe a -> Bool fromJust :: Maybe a -> a fromMaybe :: a -> Maybe a -> a listToMaybe :: [a] -> Maybe a maybeToList :: Maybe a -> [a] catMaybes :: [Maybe a] -> [a] mapMaybe :: (a -> Maybe b) -> [a] -> [b] |
Конструктор типа Maybe определен в Prelude следующим образом:
data Maybe a = Nothing | Just a
Назначение типа Maybe заключается в том, чтобы предоставить метод обработки
неправильных или необязательных значений без завершения программы, что произошло бы, если бы использовалась функция error, и без использования функции IOError из монады IO, которая потребовала бы, чтобы выражение стало монадическим. Правильный
результат инкапсулируется путем обертывания его в Just; неправильный результат
возвращается в виде Nothing.
Другие операции над Maybe предусмотрены как часть монадических классов в Prelude.