Data.Functor
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | временная |
| Переносимость | переносимый |
| Безопасный Haskell | Достоверный |
| Язык | Haskell2010 |
Описание
Функторы: единообразное действие над параметризованным типом, обобщающее функцию map для списков.
class Functor f where Исходный код
Класс Functor используется для типов, над которыми можно применять отображение. Экземпляры Functor должны удовлетворять следующим законам:
fmap id == id fmap (f . g) == fmap f . fmap g
Экземпляры Functor для списков, Maybe и IO удовлетворяют этим законам.
Минимальное полное определение
Методы
fmap :: (a -> b) -> f a -> f b Исходный код
(<$) :: a -> f b -> f a infixl 4 Исходный код
Заменяет все места ввода одним и тем же значением. По умолчанию определено как fmap . const, но может быть переопределено более эффективной версией.
Примеры
| Functor [] | |
| Functor IO | |
| Functor МожетБыть | |
| Functor ReadP | |
| Functor ReadPrec | |
| Functor Последний | |
| Functor Первый | |
| Functor STM | |
| Functor Обработчик | |
| Functor ZipList | |
| Functor Тождество | |
| Functor ОписаниеАргумента | |
| Functor ОписаниеПараметра | |
| Functor ПорядокАргументов | |
| Functor ((->) r) | |
| Functor (Either a) | |
| Functor (пара a) | |
| Functor (ST s) | |
| Functor (Прокси *) | |
| Arrow a => Functor (ArrowMonad a) | |
| Monad m => Functor (ОбёрнутыйМонад m) | |
| Functor (Const m) | |
| Functor (ST s) | |
| Functor f => Functor (Alt * f) | |
| Arrow a => Functor (ОбёрнутыйArrow a b) |
($>) :: Functor f => f a -> b -> f b infixl 4 Источник
Перевернутая версия <$.
Примеры
Замените содержимое Maybe Int константой String.
>>>Nothing $> "foo"Nothing>>>Just 90210 $> "foo"Just "foo"
Замените содержимое Either Int Int константой String, что приведёт к Either Int String.
>>>Left 8675309 $> "foo"Left 8675309>>>Right 8675309 $> "foo"Right "foo"
Замените каждый элемент списка на константу String.
>>>[1,2,3] $> "foo"["foo","foo","foo"]
Замените второй элемент пары константой String:
>>>(1,2) $> "foo"(1,"foo")
С: 4.7.0.0
(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4 Source
Синоним-инфикс для fmap.
Примеры
Преобразовать из Maybe Int в Maybe String с помощью show:
>>>show <$> NothingNothing>>>show <$> Just 3Just "3"
Преобразовать из Either Int Int в Either Int String с помощью show:
>>>show <$> Left 17Left 17>>>show <$> Right 17Right "17"
Удвоить каждый элемент списка:
>>>(*2) <$> [1,2,3][2,4,6]
Применить even ко второму элементу пары:
>>>even <$> (2,2)(2,True)
void :: Functor f => f a -> f () Source
void value игнорирует результат вычисления, например, возвращаемое значение действия IO.
Примеры
Заменить содержимое Maybe Int на единицу:
>>>void NothingNothing>>>void (Just 3)Just ()
Заменить содержимое Either Int Int на единицу, что приведет к Either Int '()':
>>>void (Left 8675309)Left 8675309>>>void (Right 8675309)Right ()
Заменить каждый элемент списка на единицу:
>>>void [1,2,3][(),(),()]
Заменить второй элемент пары на единицу:
>>>void (1,2)(1,())
Игнорировать результат действия IO:
>>>mapM print [1,2]1 2 [(),()]>>>void $ mapM print [1,2]1 2
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Data-Functor.html