Spec-Zone.ru › Haskell 9

Data.Functor

Авторское право (c) The University of Glasgow 2001
Лицензия в стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность предварительная
Переносимость переносимая
Безопасный Haskell Безопасный
Язык Haskell2010

Описание

Тип f является функтором, если он предоставляет функцию fmap, которая для любых типов a и b позволяет применить любую функцию типа (a -> b), чтобы преобразовать f a в f b, сохраняя структуру f.

class Functor (f :: Type -> Type) where Источник

Тип f является функтором, если он предоставляет функцию fmap, которая для любых типов a и b позволяет применить любую функцию из (a -> b), чтобы преобразовать f a в f b, сохраняя структуру f. Кроме того, f должен удовлетворять следующим законам:

Тождественность
fmap id == id
Композиция
fmap (f . g) == fmap f . fmap g

Обратите внимание: второй закон следует из свободной теоремы для типа fmap и первого закона, поэтому достаточно проверить выполнение первого условия. Объяснение см. в этих статьях на сайте School of Haskell или в статье Дэвида Лупошанского.

Минимальное полное определение

fmap

Методы

fmap :: (a -> b) -> f a -> f b Источник

fmap используется для применения функции типа (a -> b) к значению типа f a, где f — функтор, чтобы получить значение типа f b. Обратите внимание: для любого конструктора типов с более чем одним параметром (например, Either) с помощью fmap можно изменить только последний параметр типа (например, b в Either a b).

Некоторые конструкторы типов с двумя или более параметрами имеют экземпляр Bifunctor, позволяющий отображать значения как по последнему, так и по предпоследнему параметру.

Примеры
Развернуть

Преобразование Maybe Int в Maybe String с помощью show:

>>> fmap show Nothing
Nothing
>>> fmap show (Just 3)
Just "3"

Преобразование Either Int Int в Either Int String с помощью show:

>>> fmap show (Left 17)
Left 17
>>> fmap show (Right 17)
Right "17"

Удвоение каждого элемента списка:

>>> fmap (*2) [1,2,3]
[2,4,6]

Применение even ко второму элементу пары:

>>> fmap even (2,2)
(2,True)

Может показаться неожиданным, что функция применяется только к последнему элементу кортежа, тогда как в приведённом выше примере со списком она применяется к каждому элементу списка. Чтобы понять почему, помните, что кортежи — это конструкторы типов с несколькими параметрами типа: кортеж из 3 элементов (a,b,c) также можно записать как (,,) a b c, а его экземпляр Functor определён для Functor ((,,) a b) (то есть только третий параметр допускает отображение с помощью fmap).

Это объясняет, почему fmap можно использовать с кортежами, содержащими значения разных типов, как в следующем примере:

>>> fmap even ("hello", 1.0, 4)
("hello",1.0,True)

(<$) :: a -> f b -> f a infixl 4 Источник

Заменяет все позиции во входном значении одним и тем же значением. Определение по умолчанию — fmap . const, но его можно переопределить более эффективной версией.

Примеры
Развернуть

Выполнение вычисления с Maybe и замена результата константным значением, если он равен Just:

>>> 'a' <$ Just 2
Just 'a'
>>> 'a' <$ Nothing
Nothing
Экземпляры
Подробности экземпляров
Functor Complex Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в Data.Complex

Методы

fmap :: (a -> b) -> Complex a -> Complex b Исходный код

(<$) :: a -> Complex b -> Complex a Исходный код

Functor First Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в Data.Semigroup

Методы

fmap :: (a -> b) -> First a -> First b Исходный код

(<$) :: a -> First b -> First a Исходный код

Functor Last Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в Data.Semigroup

Методы

fmap :: (a -> b) -> Last a -> Last b Исходный код

(<$) :: a -> Last b -> Last a Исходный код

Functor Max Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в Data.Semigroup

Методы

fmap :: (a -> b) -> Max a -> Max b Исходный код

(<$) :: a -> Max b -> Max a Исходный код

Functor Min Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в Data.Semigroup

Методы

fmap :: (a -> b) -> Min a -> Min b Исходный код

(<$) :: a -> Min b -> Min a Исходный код

Functor ArgDescr Исходный код

Начиная с: base-4.7.0.0

Подробности экземпляра

Определён в System.Console.GetOpt

Методы

fmap :: (a -> b) -> ArgDescr a -> ArgDescr b Исходный код

(<$) :: a -> ArgDescr b -> ArgDescr a Исходный код

Functor ArgOrder Исходный код

Начиная с: base-4.7.0.0

Подробности экземпляра

Определён в System.Console.GetOpt

Методы

fmap :: (a -> b) -> ArgOrder a -> ArgOrder b Исходный код

(<$) :: a -> ArgOrder b -> ArgOrder a Исходный код

Functor OptDescr Исходный код

Начиная с: base-4.7.0.0

Подробности экземпляра

Определён в System.Console.GetOpt

Методы

fmap :: (a -> b) -> OptDescr a -> OptDescr b Исходный код

(<$) :: a -> OptDescr b -> OptDescr a Исходный код

Functor NonEmpty Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.NonEmpty

Методы

fmap :: (a -> b) -> NonEmpty a -> NonEmpty b Исходный код

(<$) :: a -> NonEmpty b -> NonEmpty a Исходный код

Functor STM Исходный код

Начиная с: base-4.3.0.0

Подробности экземпляра

Определён в GHC.Internal.Conc.Sync

Методы

fmap :: (a -> b) -> STM a -> STM b Исходный код

(<$) :: a -> STM b -> STM a Исходный код

Functor Handler Исходный код

Начиная с: base-4.6.0.0

Подробности экземпляра

Определён в GHC.Internal.Control.Exception

Методы

fmap :: (a -> b) -> Handler a -> Handler b Исходный код

(<$) :: a -> Handler b -> Handler a Исходный код

Functor Identity Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Functor.Identity

Методы

fmap :: (a -> b) -> Identity a -> Identity b Исходный код

(<$) :: a -> Identity b -> Identity a Исходный код

Functor First Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Monoid

Методы

fmap :: (a -> b) -> First a -> First b Исходный код

(<$) :: a -> First b -> First a Исходный код

Functor Last Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Monoid

Методы

fmap :: (a -> b) -> Last a -> Last b Исходный код

(<$) :: a -> Last b -> Last a Исходный код

Functor Down Исходный код

Начиная с: base-4.11.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Ord

Методы

fmap :: (a -> b) -> Down a -> Down b Исходный код

(<$) :: a -> Down b -> Down a Исходный код

Functor Dual Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Semigroup.Internal

Методы

fmap :: (a -> b) -> Dual a -> Dual b Исходный код

(<$) :: a -> Dual b -> Dual a Исходный код

Functor Product Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Semigroup.Internal

Методы

fmap :: (a -> b) -> Product a -> Product b Исходный код

(<$) :: a -> Product b -> Product a Исходный код

Functor Sum Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.Data.Semigroup.Internal

Методы

fmap :: (a -> b) -> Sum a -> Sum b Исходный код

(<$) :: a -> Sum b -> Sum a Исходный код

Functor ZipList Исходный код

Начиная с: base-2.1

Подробности экземпляра

Определён в GHC.Internal.Functor.ZipList

Методы

fmap :: (a -> b) -> ZipList a -> ZipList b Исходный код

(<$) :: a -> ZipList b -> ZipList a Исходный код

Functor NoIO Исходный код

Начиная с: base-4.8.0.0

Подробности экземпляра

Определён в GHC.Internal.GHCi

Методы

fmap :: (a -> b) -> NoIO a -> NoIO b Исходный код

(<$) :: a -> NoIO b -> NoIO a Исходный код

Functor Par1 Исходный код

Начиная с: base-4.9.0.0

Подробности экземпляра

Определён в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> Par1 a -> Par1 b Исходный код

(<$) :: a -> Par1 b -> Par1 a Исходный код

Functor GenClosure Исходный код
Сведения об экземпляре

Определено в GHC.Internal.Heap.Closures

Методы

fmap :: (a -> b) -> GenClosure a -> GenClosure b Источник

(<$) :: a -> GenClosure b -> GenClosure a Источник

Functor GenStackField Источник
Сведения об экземпляре

Определено в GHC.Internal.Heap.Closures

Методы

fmap :: (a -> b) -> GenStackField a -> GenStackField b Источник

(<$) :: a -> GenStackField b -> GenStackField a Источник

Functor GenStackFrame Источник
Сведения об экземпляре

Определено в GHC.Internal.Heap.Closures

Методы

fmap :: (a -> b) -> GenStackFrame a -> GenStackFrame b Источник

(<$) :: a -> GenStackFrame b -> GenStackFrame a Источник

Functor GenStgStackClosure Источник
Сведения об экземпляре

Определено в GHC.Internal.Heap.Closures

Методы

fmap :: (a -> b) -> GenStgStackClosure a -> GenStgStackClosure b Источник

(<$) :: a -> GenStgStackClosure b -> GenStgStackClosure a Источник

Functor Q Источник
Сведения об экземпляре

Определено в GHC.Internal.TH.Syntax

Методы

fmap :: (a -> b) -> Q a -> Q b Источник

(<$) :: a -> Q b -> Q a Источник

Functor TyVarBndr Источник
Сведения об экземпляре

Определено в GHC.Internal.TH.Syntax

Методы

fmap :: (a -> b) -> TyVarBndr a -> TyVarBndr b Источник

(<$) :: a -> TyVarBndr b -> TyVarBndr a Источник

Functor P Источник

Начиная с: base-4.8.0.0

Сведения об экземпляре

Определено в GHC.Internal.Text.ParserCombinators.ReadP

Методы

fmap :: (a -> b) -> P a -> P b Источник

(<$) :: a -> P b -> P a Источник

Functor ReadP Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Text.ParserCombinators.ReadP

Методы

fmap :: (a -> b) -> ReadP a -> ReadP b Источник

(<$) :: a -> ReadP b -> ReadP a Источник

Functor ReadPrec Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Text.ParserCombinators.ReadPrec

Методы

fmap :: (a -> b) -> ReadPrec a -> ReadPrec b Источник

(<$) :: a -> ReadPrec b -> ReadPrec a Источник

Functor IO Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a -> b) -> IO a -> IO b Источник

(<$) :: a -> IO b -> IO a Источник

Functor Maybe Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a -> b) -> Maybe a -> Maybe b Источник

(<$) :: a -> Maybe b -> Maybe a Источник

Functor Solo Источник

Начиная с: base-4.15

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a -> b) -> Solo a -> Solo b Источник

(<$) :: a -> Solo b -> Solo a Источник

Functor [] Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a -> b) -> [a] -> [b] Источник

(<$) :: a -> [b] -> [a] Источник

Monad m => Functor (WrappedMonad m) Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в Control.Applicative

Методы

fmap :: (a -> b) -> WrappedMonad m a -> WrappedMonad m b Источник

(<$) :: a -> WrappedMonad m b -> WrappedMonad m a Источник

Functor (Arg a) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в Data.Semigroup

Методы

fmap :: (a0 -> b) -> Arg a a0 -> Arg a b Источник

(<$) :: a0 -> Arg a b -> Arg a a0 Источник

Functor (Array i) Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Arr

Методы

fmap :: (a -> b) -> Array i a -> Array i b Источник

(<$) :: a -> Array i b -> Array i a Источник

Arrow a => Functor (ArrowMonad a) Источник

Начиная с: base-4.6.0.0

Сведения об экземпляре

Определено в GHC.Internal.Control.Arrow

Методы

fmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b Источник

(<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 Источник

Functor (ST s) Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Control.Monad.ST.Lazy.Imp

Методы

fmap :: (a -> b) -> ST s a -> ST s b Источник

(<$) :: a -> ST s b -> ST s a Источник

Functor (Either a) Источник

Начиная с: base-3.0

Сведения об экземпляре

Определено в GHC.Internal.Data.Either

Методы

fmap :: (a0 -> b) -> Either a a0 -> Either a b Источник

(<$) :: a0 -> Either a b -> Either a a0 Источник

Functor (StateL s) Источник

Начиная с: base-4.0

Подробности экземпляра

Определено в GHC.Internal.Data.Functor.Utils

Методы

fmap :: (a -> b) -> StateL s a -> StateL s b Источник

(<$) :: a -> StateL s b -> StateL s a Источник

Functor (StateR s) Источник

С версии: base-4.0

Подробности экземпляра

Определено в GHC.Internal.Data.Functor.Utils

Методы

fmap :: (a -> b) -> StateR s a -> StateR s b Источник

(<$) :: a -> StateR s b -> StateR s a Источник

Functor (Proxy :: Type -> Type) Источник

С версии: base-4.7.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Proxy

Методы

fmap :: (a -> b) -> Proxy a -> Proxy b Источник

(<$) :: a -> Proxy b -> Proxy a Источник

Functor (U1 :: Type -> Type) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> U1 a -> U1 b Источник

(<$) :: a -> U1 b -> U1 a Источник

Functor (V1 :: Type -> Type) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> V1 a -> V1 b Источник

(<$) :: a -> V1 b -> V1 a Источник

Functor (ST s) Источник

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.ST

Методы

fmap :: (a -> b) -> ST s a -> ST s b Источник

(<$) :: a -> ST s b -> ST s a Источник

Functor ((,) a) Источник

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b) -> (a, a0) -> (a, b) Источник

(<$) :: a0 -> (a, b) -> (a, a0) Источник

Arrow a => Functor (WrappedArrow a b) Источник

С версии: base-2.1

Подробности экземпляра

Определено в Control.Applicative

Методы

fmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Источник

(<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Источник

Functor m => Functor (Kleisli m a) Источник

С версии: base-4.14.0.0

Подробности экземпляра

Определено в GHC.Internal.Control.Arrow

Методы

fmap :: (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b Источник

(<$) :: a0 -> Kleisli m a b -> Kleisli m a a0 Источник

Functor (Const m :: Type -> Type) Источник

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Internal.Data.Functor.Const

Методы

fmap :: (a -> b) -> Const m a -> Const m b Источник

(<$) :: a -> Const m b -> Const m a Источник

Monad m => Functor (StateT s m) Источник

С версии: base-4.18.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Functor.Utils

Методы

fmap :: (a -> b) -> StateT s m a -> StateT s m b Источник

(<$) :: a -> StateT s m b -> StateT s m a Источник

Functor f => Functor (Ap f) Источник

С версии: base-4.12.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Monoid

Методы

fmap :: (a -> b) -> Ap f a -> Ap f b Источник

(<$) :: a -> Ap f b -> Ap f a Источник

Functor f => Functor (Alt f) Источник

С версии: base-4.8.0.0

Подробности экземпляра

Определено в GHC.Internal.Data.Semigroup.Internal

Методы

fmap :: (a -> b) -> Alt f a -> Alt f b Источник

(<$) :: a -> Alt f b -> Alt f a Источник

(Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f) Источник

С версии: base-4.17.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> Generically1 f a -> Generically1 f b Источник

(<$) :: a -> Generically1 f b -> Generically1 f a Источник

Functor f => Functor (Rec1 f) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> Rec1 f a -> Rec1 f b Источник

(<$) :: a -> Rec1 f b -> Rec1 f a Источник

Functor (URec (Ptr ()) :: Type -> Type) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b Источник

(<$) :: a -> URec (Ptr ()) b -> URec (Ptr ()) a Источник

Functor (URec Char :: Type -> Type) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Char a -> URec Char b Источник

(<$) :: a -> URec Char b -> URec Char a Источник

Functor (URec Double :: Type -> Type) Источник

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Double a -> URec Double b Источник

(<$) :: a -> URec Double b -> URec Double a Источник

Functor (URec Float :: Type -> Type) Источник

С версии: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Float a -> URec Float b Источник

(<$) :: a -> URec Float b -> URec Float a Источник

Functor (URec Int :: Type -> Type) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Int a -> URec Int b Источник

(<$) :: a -> URec Int b -> URec Int a Источник

Functor (URec Word :: Type -> Type) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> URec Word a -> URec Word b Источник

(<$) :: a -> URec Word b -> URec Word a Источник

Functor ((,,) a b) Источник

Начиная с: base-4.14.0.0

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b0) -> (a, b, a0) -> (a, b, b0) Источник

(<$) :: a0 -> (a, b, b0) -> (a, b, a0) Источник

(Functor f, Functor g) => Functor (Product f g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в Data.Functor.Product

Методы

fmap :: (a -> b) -> Product f g a -> Product f g b Источник

(<$) :: a -> Product f g b -> Product f g a Источник

(Functor f, Functor g) => Functor (Sum f g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в Data.Functor.Sum

Методы

fmap :: (a -> b) -> Sum f g a -> Sum f g b Источник

(<$) :: a -> Sum f g b -> Sum f g a Источник

(Functor f, Functor g) => Functor (f :*: g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> (f :*: g) a -> (f :*: g) b Источник

(<$) :: a -> (f :*: g) b -> (f :*: g) a Источник

(Functor f, Functor g) => Functor (f :+: g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> (f :+: g) a -> (f :+: g) b Источник

(<$) :: a -> (f :+: g) b -> (f :+: g) a Источник

Functor (K1 i c :: Type -> Type) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> K1 i c a -> K1 i c b Источник

(<$) :: a -> K1 i c b -> K1 i c a Источник

Functor ((,,,) a b c) Источник

Начиная с: base-4.14.0.0

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b0) -> (a, b, c, a0) -> (a, b, c, b0) Источник

(<$) :: a0 -> (a, b, c, b0) -> (a, b, c, a0) Источник

Functor ((->) r) Источник

Начиная с: base-2.1

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a -> b) -> (r -> a) -> r -> b Источник

(<$) :: a -> (r -> b) -> r -> a Источник

(Functor f, Functor g) => Functor (Compose f g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в Data.Functor.Compose

Методы

fmap :: (a -> b) -> Compose f g a -> Compose f g b Источник

(<$) :: a -> Compose f g b -> Compose f g a Источник

(Functor f, Functor g) => Functor (f :.: g) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> (f :.: g) a -> (f :.: g) b Источник

(<$) :: a -> (f :.: g) b -> (f :.: g) a Источник

Functor f => Functor (M1 i c f) Источник

Начиная с: base-4.9.0.0

Сведения об экземпляре

Определено в GHC.Internal.Generics

Методы

fmap :: (a -> b) -> M1 i c f a -> M1 i c f b Источник

(<$) :: a -> M1 i c f b -> M1 i c f a Источник

Functor ((,,,,) a b c d) Источник

Начиная с: base-4.18.0.0

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b0) -> (a, b, c, d, a0) -> (a, b, c, d, b0) Источник

(<$) :: a0 -> (a, b, c, d, b0) -> (a, b, c, d, a0) Источник

Functor ((,,,,,) a b c d e) Источник

Начиная с: base-4.18.0.0

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b0) -> (a, b, c, d, e, a0) -> (a, b, c, d, e, b0) Источник

(<$) :: a0 -> (a, b, c, d, e, b0) -> (a, b, c, d, e, a0) Источник

Functor ((,,,,,,) a b c d e f) Источник

Начиная с: base-4.18.0.0

Сведения об экземпляре

Определено в GHC.Internal.Base

Методы

fmap :: (a0 -> b0) -> (a, b, c, d, e, f, a0) -> (a, b, c, d, e, f, b0) Источник

(<$) :: a0 -> (a, b, c, d, e, f, b0) -> (a, b, c, d, e, f, a0) Источник

($>) :: 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")

Начиная с: base-4.7.0.0

(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4 Источник

Инфиксный синоним для fmap.

Название этого оператора — отсылка к $. Обратите внимание на сходство их типов:

 ($)  ::              (a -> b) ->   a ->   b
(<$>) :: Functor f => (a -> b) -> f a -> f b

В то время как $ — это применение функции, <$> — применение функции, поднятое над Functor.

Примеры
Развернуть

Преобразовать Maybe Int в Maybe String с помощью show:

>>> show <$> Nothing
Nothing
>>> show <$> Just 3
Just "3"

Преобразовать Either Int Int в Either Int String с помощью show:

>>> show <$> Left 17
Left 17
>>> show <$> Right 17
Right "17"

Удвоить каждый элемент списка:

>>> (*2) <$> [1,2,3]
[2,4,6]

Применить even ко второму элементу пары:

>>> even <$> (2,2)
(2,True)

(<&>) :: Functor f => f a -> (a -> b) -> f b infixl 1 Источник

Переставленная версия <$>.

(<&>) = flip fmap
Примеры
Развернуть

Применить (+1) к списку, Just и Right:

>>> Just 2 <&> (+1)
Just 3
>>> [1,2,3] <&> (+1)
[2,3,4]
>>> Right 3 <&> (+1)
Right 4

Начиная с: base-4.11.0.0

unzip :: Functor f => f (a, b) -> (f a, f b) Источник

Обобщение Data.List.unzip.

Примеры
Развернуть
>>> unzip (Just ("Hello", "World"))
(Just "Hello",Just "World")
>>> unzip [("I", "love"), ("really", "haskell")]
(["I","really"],["love","haskell"])

Начиная с: base-4.19.0.0

void :: Functor f => f a -> f () Источник

void value отбрасывает или игнорирует результат вычисления, например возвращаемое значение действия IO.

Примеры
Развернуть

Заменить содержимое Maybe Int на unit:

>>> void Nothing
Nothing
>>> void (Just 3)
Just ()

Заменить содержимое Either Int Int на unit, получив Either Int ():

>>> void (Left 8675309)
Left 8675309
>>> void (Right 8675309)
Right ()

Заменить каждый элемент списка на unit:

>>> void [1,2,3]
[(),(),()]

Заменить второй элемент пары на unit:

>>> 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/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Functor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API