Control.Applicative
| Авторские права | Conor McBride и Ross Paterson 2005 |
|---|---|
| Лицензия | BSD-стиль (см. файл LICENSE в дистрибутиве) |
| Поддержка | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | переносимая |
| Безопасный Haskell | Надёжный |
| Язык | Haskell2010 |
Описание
Этот модуль описывает структуру, промежуточную между функтором и монадой (технически, сильным слабым моноидальным функтором). По сравнению с монадами, этот интерфейс лишен полной мощи операции связывания >>=, но
- имеет больше примеров.
- его достаточно для многих применений, например, для контекстно-свободного разбора или класса
Traversable. - примеры могут выполнять анализ вычислений до их выполнения и, таким образом, обеспечивать общие оптимизации.
Этот интерфейс был введён для парсеров Никласом Рёйемо, потому что он допускает больше совместного использования, чем монадический интерфейс. Названия здесь в основном основаны на работе по разбору Доайте Свиерстры.
Для получения более подробной информации см. Applicative Programming with Effects, авторы Conor McBride и Ross Paterson.
Аппликативные функторы
class Functor f => Applicative (f :: Type -> Type) where Исходный код
Функтор с применением, предоставляющий операции для
- встраивания чистых выражений (
pure), и - последовательного выполнения вычислений и объединения их результатов (
<*>иliftA2).
Минимальное полное определение должно включать реализации pure и любой из <*> или liftA2. Если определены оба, то они должны вести себя так же, как их стандартные определения:
(<*>) = liftA2 id
liftA2 f x y = f <$> x <*> y
Кроме того, любое определение должно удовлетворять следующим условиям:
- Тождество
pure id <*> v = v
- Композиция
pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
- Гомоморфизм
pure f <*> pure x = pure (f x)
- Перестановка
u <*> pure y = pure ($ y) <*> u
Другие методы имеют следующие стандартные определения, которые могут быть переопределены эквивалентными специализированными реализациями:
Вследствие этих законов, пример Functor для f будет удовлетворять
Может быть полезно отметить, что предполагая
forall x y. p (q x y) = f x . g y
из вышеизложенного следует, что
liftA2 p (liftA2 q u v) = liftA2 f u . liftA2 g v
Если f также является Monad, он должен удовлетворять
(что подразумевает, что pure и <*> удовлетворяют законам аппликативного функтора).
Методы
pure :: a -> f a Исходный код
Поднять значение в структуру.
Примеры
>>> pure 1 :: Maybe Int Just 1
>>> pure 'z' :: [Char] "z"
>>> pure (pure ":D") :: Maybe [String] Just [":D"]
(<*>) :: f (a -> b) -> f a -> f b infixl 4 Исходный код
Последовательное применение.
Несколько функторов поддерживают реализацию <*> более эффективную, чем стандартная.
Пример
В сочетании с (<$>), (<*>) может использоваться для построения записи.
>>> data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
>>> produceFoo :: Applicative f => f Foo >>> produceBar :: Applicative f => f Bar >>> produceBaz :: Applicative f => f Baz
>>> mkState :: Applicative f => f MyState >>> mkState = MyState <$> produceFoo <*> produceBar <*> produceBaz
liftA2 :: (a -> b -> c) -> f a -> f b -> f c Исходный код
Поднять бинарную функцию к действиям.
Некоторые функторы поддерживают реализацию liftA2 более эффективную, чем стандартная. В частности, если fmap является дорогостоящей операцией, скорее всего, лучше использовать liftA2 вместо fmap над структурой и затем использовать <*>.
Этот метод стал методом типа класса в 4.10.0.0. До этого он был функцией, определённой через <*> и fmap.
Пример
>>> liftA2 (,) (Just 3) (Just 5) Just (3,5)
>>> liftA2 (+) [1, 2, 3] [4, 5, 6] [5,6,7,6,7,8,7,8,9]
(*>) :: f a -> f b -> f b infixl 4 Исходный код
Последовательность действий, игнорируя значение первого аргумента.
Примеры
Если используется совместно с примером Applicative для Maybe, можно объединить вычисления Maybe с возможным "ранним возвратом" в случае Nothing.
>>> Just 2 *> Just 3 Just 3
>>> Nothing *> Just 3 Nothing
Конечно, более интересный случай использования - это вычисления с эффектами вместо просто возвращения чистых значений.
>>> import Data.Char
>>> import GHC.Internal.Text.ParserCombinators.ReadP
>>> let p = string "my name is " *> munch1 isAlpha <* eof
>>> readP_to_S p "my name is Simon"
[("Simon","")]
(<*) :: f a -> f b -> f a infixl 4 Исходный код
Последовательность действий, игнорируя значение второго аргумента.
Экземпляры
| Applicative Complex Источник | С версии: base-4.9.0.0 |
Определено в Data.Complex | |
| Applicative First Источник | С версии: base-4.9.0.0 |
| Applicative Last Источник | С версии: base-4.9.0.0 |
| Applicative Max Источник | С версии: base-4.9.0.0 |
| Applicative Min Источник | С версии: base-4.9.0.0 |
| Applicative NonEmpty Источник | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Base | |
| Applicative STM Источник | С момента: base-4.8.0.0 |
| Applicative Identity Источник | С момента: base-4.8.0.0 |
Определено в GHC.Internal.Data.Functor.Identity | |
| Applicative First Источник | С момента: base-4.8.0.0 |
Определено в GHC.Internal.Data.Semigroup.Internal Методыpure :: a -> Product a Исходный код (<*>) :: Product (a -> b) -> Product a -> Product b Исходный код liftA2 :: (a -> b -> c) -> Product a -> Product b -> Product c Исходный код (*>) :: Product a -> Product b -> Product b Исходный код (<*) :: Product a -> Product b -> Product a Исходный код | |
| Applicative Sum Исходный код | С момента: base-4.8.0.0 |
Определено в GHC.Internal.Data.Semigroup.Internal Методыpure :: a -> Sum a Исходный код (<*>) :: Sum (a -> b) -> Sum a -> Sum b Исходный код liftA2 :: (a -> b -> c) -> Sum a -> Sum b -> Sum c Исходный код (*>) :: Sum a -> Sum b -> Sum b Исходный код (<*) :: Sum a -> Sum b -> Sum a Исходный код | |
| Applicative ZipList Исходный код |
f <$> ZipList xs1 <*> ... <*> ZipList xsN
= ZipList (zipWithN f xs1 ... xsN)
где (\a b c -> stimes c [a, b]) <$> ZipList "abcd" <*> ZipList "567" <*> ZipList [1..]
= ZipList (zipWith3 (\a b c -> stimes c [a, b]) "abcd" "567" [1..])
= ZipList {getZipList = ["a5","b6b6","c7c7c7"]}
С момента: base-2.1 |
Определено в GHC.Internal.Functor.ZipList Методыpure :: a -> ZipList a Исходный код (<*>) :: ZipList (a -> b) -> ZipList a -> ZipList b Исходный код liftA2 :: (a -> b -> c) -> ZipList a -> ZipList b -> ZipList c Исходный код (*>) :: ZipList a -> ZipList b -> ZipList b Исходный код (<*) :: ZipList a -> ZipList b -> ZipList a Исходный код | |
| Applicative NoIO Исходный код | С момента: base-4.8.0.0 |
Определено в GHC.Internal.GHCi Методыpure :: a -> NoIO a Исходный код (<*>) :: NoIO (a -> b) -> NoIO a -> NoIO b Исходный код liftA2 :: (a -> b -> c) -> NoIO a -> NoIO b -> NoIO c Исходный код (*>) :: NoIO a -> NoIO b -> NoIO b Исходный код (<*) :: NoIO a -> NoIO b -> NoIO a Исходный код | |
| Applicative Par1 Исходный код | С момента: base-4.9.0.0 |
| Applicative Q Источник | |
| Applicative P Источник | С: base-4.5.0.0 |
| Applicative ReadP Источник | С: base-4.6.0.0 |
Определено в GHC.Internal.Text.ParserCombinators.ReadP | |
| Applicative ReadPrec Source | Since: base-4.6.0.0 |
Определено в GHC.Internal.Text.ParserCombinators.ReadPrec | |
| Applicative IO Source | Since: base-2.1 |
| Applicative Maybe Source | Since: base-2.1 |
| Applicative Solo Source | Since: base-4.15 |
| Applicative [] Source | Since: base-2.1 |
| Applicative (Proxy :: Type -> Type) Source | Since: base-4.7.0.0 |
| Applicative (U1 :: Type -> Type) Source | Since: base-4.9.0.0 |
| Applicative (ST s) Source | Since: base-4.4.0.0 |
| Monoid a => Applicative ((,) a) Source |
Для кортежей, ограничение ("hello ", (+15)) <*> ("world!", 2002)
("hello world!",2017)
Since: base-2.1 |
| Arrow a => Applicative (WrappedArrow a b) Source | Since: base-2.1 |
Определено в GHC.Internal.Data.Functor.Utils Методыpure :: a -> StateT s m a Исходный код (<*>) :: StateT s m (a -> b) -> StateT s m a -> StateT s m b Исходный код liftA2 :: (a -> b -> c) -> StateT s m a -> StateT s m b -> StateT s m c Исходный код (*>) :: StateT s m a -> StateT s m b -> StateT s m b Исходный код (<*) :: StateT s m a -> StateT s m b -> StateT s m a Исходный код | |
| Applicative f => Applicative (Ap f) Исходный код | С момента: base-4.12.0.0 |
Определено в GHC.Internal.Data.Monoid Методыpure :: a -> Ap f a Исходный код (<*>) :: Ap f (a -> b) -> Ap f a -> Ap f b Исходный код liftA2 :: (a -> b -> c) -> Ap f a -> Ap f b -> Ap f c Исходный код (*>) :: Ap f a -> Ap f b -> Ap f b Исходный код (<*) :: Ap f a -> Ap f b -> Ap f a Исходный код | |
| Applicative f => Applicative (Alt f) Исходный код | С момента: base-4.8.0.0 |
Определено в GHC.Internal.Data.Semigroup.Internal Методыpure :: a -> Alt f a Исходный код (<*>) :: Alt f (a -> b) -> Alt f a -> Alt f b Исходный код liftA2 :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Исходный код (*>) :: Alt f a -> Alt f b -> Alt f b Исходный код (<*) :: Alt f a -> Alt f b -> Alt f a Исходный код | |
| (Generic1 f, Applicative (Rep1 f)) => Applicative (Generically1 f) Исходный код | С момента: base-4.17.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> Generically1 f a Исходный код (<*>) :: Generically1 f (a -> b) -> Generically1 f a -> Generically1 f b Исходный код liftA2 :: (a -> b -> c) -> Generically1 f a -> Generically1 f b -> Generically1 f c Исходный код (*>) :: Generically1 f a -> Generically1 f b -> Generically1 f b Исходный код (<*) :: Generically1 f a -> Generically1 f b -> Generically1 f a Исходный код | |
| Applicative f => Applicative (Rec1 f) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> Rec1 f a Исходный код (<*>) :: Rec1 f (a -> b) -> Rec1 f a -> Rec1 f b Исходный код liftA2 :: (a -> b -> c) -> Rec1 f a -> Rec1 f b -> Rec1 f c Исходный код (*>) :: Rec1 f a -> Rec1 f b -> Rec1 f b Исходный код (<*) :: Rec1 f a -> Rec1 f b -> Rec1 f a Исходный код | |
| (Моноид a, Моноид b) => Applicative ((,,) a b) Исходный код | С момента: base-4.14.0.0 |
Определено в GHC.Internal.Base Методыpure :: a0 -> (a, b, a0) Исходный код (<*>) :: (a, b, a0 -> b0) -> (a, b, a0) -> (a, b, b0) Исходный код liftA2 :: (a0 -> b0 -> c) -> (a, b, a0) -> (a, b, b0) -> (a, b, c) Исходный код (*>) :: (a, b, a0) -> (a, b, b0) -> (a, b, b0) Исходный код (<*) :: (a, b, a0) -> (a, b, b0) -> (a, b, a0) Исходный код | |
| (Applicative f, Applicative g) => Applicative (Product f g) Исходный код | С момента: base-4.9.0.0 |
Определено в Data.Functor.Product Методыpure :: a -> Product f g a Исходный код (<*>) :: Product f g (a -> b) -> Product f g a -> Product f g b Исходный код liftA2 :: (a -> b -> c) -> Product f g a -> Product f g b -> Product f g c Исходный код (*>) :: Product f g a -> Product f g b -> Product f g b Исходный код (<*) :: Product f g a -> Product f g b -> Product f g a Исходный код | |
| (Applicative f, Applicative g) => Applicative (f :*: g) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> (f :*: g) a Исходный код (<*>) :: (f :*: g) (a -> b) -> (f :*: g) a -> (f :*: g) b Исходный код liftA2 :: (a -> b -> c) -> (f :*: g) a -> (f :*: g) b -> (f :*: g) c Исходный код (*>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b Исходный код (<*) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) a Исходный код | |
| Monoid c => Applicative (K1 i c :: Тип -> Тип) Исходный код | С момента выпуска: base-4.12.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> K1 i c a Исходный код (<*>) :: K1 i c (a -> b) -> K1 i c a -> K1 i c b Исходный код liftA2 :: (a -> b -> c0) -> K1 i c a -> K1 i c b -> K1 i c c0 Исходный код (*>) :: K1 i c a -> K1 i c b -> K1 i c b Исходный код (<*) :: K1 i c a -> K1 i c b -> K1 i c a Исходный код | |
| (Моноид a, Моноид b, Моноид c) => Applicative ((,,,) a b c) Исходный код | С момента выпуска: base-4.14.0.0 |
Определено в GHC.Internal.Base Методыpure :: a0 -> (a, b, c, a0) Исходный код (<*>) :: (a, b, c, a0 -> b0) -> (a, b, c, a0) -> (a, b, c, b0) Исходный код liftA2 :: (a0 -> b0 -> c0) -> (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, c0) Исходный код (*>) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, b0) Исходный код (<*) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, a0) Исходный код | |
| Applicative ((->) r) Исходный код | С момента выпуска: base-2.1 |
Определено в GHC.Internal.Base Методыpure :: a -> r -> a Исходный код (<*>) :: (r -> (a -> b)) -> (r -> a) -> r -> b Исходный код liftA2 :: (a -> b -> c) -> (r -> a) -> (r -> b) -> r -> c Исходный код (*>) :: (r -> a) -> (r -> b) -> r -> b Исходный код (<*) :: (r -> a) -> (r -> b) -> r -> a Исходный код | |
| (Applicative f, Applicative g) => Applicative (Compose f g) Исходный код | С момента выпуска: base-4.9.0.0 |
Определено в Data.Functor.Compose Методыpure :: a -> Compose f g a Исходный код (<*>) :: Compose f g (a -> b) -> Compose f g a -> Compose f g b Исходный код liftA2 :: (a -> b -> c) -> Compose f g a -> Compose f g b -> Compose f g c Исходный код (*>) :: Compose f g a -> Compose f g b -> Compose f g b Исходный код (<*) :: Compose f g a -> Compose f g b -> Compose f g a Исходный код | |
| (Applicative f, Applicative g) => Applicative (f :.: g) Исходный код | С тех пор как: base-4.9.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> (f :.: g) a Исходный код (<*>) :: (f :.: g) (a -> b) -> (f :.: g) a -> (f :.: g) b Исходный код liftA2 :: (a -> b -> c) -> (f :.: g) a -> (f :.: g) b -> (f :.: g) c Исходный код (*>) :: (f :.: g) a -> (f :.: g) b -> (f :.: g) b Исходный код (<*) :: (f :.: g) a -> (f :.: g) b -> (f :.: g) a Исходный код | |
| Applicative f => Applicative (M1 i c f) Исходный код | С тех пор как: base-4.9.0.0 |
Определено в GHC.Internal.Generics Методыpure :: a -> M1 i c f a Исходный код (<*>) :: M1 i c f (a -> b) -> M1 i c f a -> M1 i c f b Исходный код liftA2 :: (a -> b -> c0) -> M1 i c f a -> M1 i c f b -> M1 i c f c0 Исходный код (*>) :: M1 i c f a -> M1 i c f b -> M1 i c f b Исходный код (<*) :: M1 i c f a -> M1 i c f b -> M1 i c f a Исходный код | |
Альтернативы
class Applicative f => Alternative (f :: Тип -> Тип) where Исходный код
Моноид на функциональных приложениях.
Если определено, some и many должны быть наименьшими решениями уравнений:
Примеры
>>> Nothing <|> Just 42 Just 42
>>> [1, 2] <|> [3, 4] [1,2,3,4]
>>> empty <|> print (2^15) 32768
Методы
Тождество <|>
empty <|> a == a a <|> empty == a
(<|>) :: f a -> f a -> f a infixl 3 Source
Ассоциативная бинарная операция
Один или более.
Примеры
>>> some (putStr "la") lalalalalalalalala... * goes on forever *
>>> some Nothing nothing
>>> take 5 <$> some (Just 1) * hangs forever *
Обратите внимание, что эту функцию можно использовать с парсерами, основанными на аппликативных функциях. В этом случае some parser будет пытаться разобрать parser один или более раз, пока не произойдёт ошибка.
Ноль или более.
Примеры
>>> many (putStr "la") lalalalalalalalala... * goes on forever *
>>> many Nothing Just []
>>> take 5 <$> many (Just 1) * hangs forever *
Обратите внимание, что эту функцию можно использовать с парсерами, основанными на аппликативных функциях. В этом случае many parser будет пытаться разобрать parser ноль или более раз, пока не произойдёт ошибка.
Экземпляры
| Alternative STM Источник |
Берёт первое не- С версии: base-4.8.0.0 |
| Alternative ZipList Источник | С версии: base-4.11.0.0 |
| Alternative P Источник | С версии: base-4.5.0.0 |
| Alternative ReadP Источник | С версии: base-4.6.0.0 |
| Alternative ReadPrec Источник | С версии: base-4.6.0.0 |
| Alternative IO Source |
Возвращает результат первого небросающего Since: base-4.9.0.0 |
| Alternative Maybe Source |
Выбирает самое левое Since: base-2.1 |
| Alternative [] Source |
Объединяет списки путём конкатенации, начиная с пустого списка. Since: base-2.1 |
| MonadPlus m => Alternative (WrappedMonad m) Source | Since: base-2.1 |
Определено в Control.Applicative Методыempty :: WrappedMonad m a Source (<|>) :: WrappedMonad m a -> WrappedMonad m a -> WrappedMonad m a Source some :: WrappedMonad m a -> WrappedMonad m [a] Source many :: WrappedMonad m a -> WrappedMonad m [a] Source | |
| ArrowPlus a => Alternative (ArrowMonad a) Source | Since: base-4.6.0.0 |
Определено в GHC.Internal.Control.Arrow Методыempty :: ArrowMonad a a0 Source (<|>) :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 Source some :: ArrowMonad a a0 -> ArrowMonad a [a0] Source many :: ArrowMonad a a0 -> ArrowMonad a [a0] Source | |
| Alternative (Proxy :: Type -> Type) Source | Since: base-4.9.0.0 |
| Alternative (U1 :: Type -> Type) Источник | С версии: base-4.9.0.0 |
| (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b) Источник | С версии: base-2.1 |
Определено в Control.Applicative Методыempty :: WrappedArrow a b a0 Источник (<|>) :: WrappedArrow a b a0 -> WrappedArrow a b a0 -> WrappedArrow a b a0 Источник some :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Источник many :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Источник | |
| Alternative m => Alternative (Kleisli m a) Источник | С версии: base-4.14.0.0 |
| Alternative f => Alternative (Ap f) Источник | С версии: base-4.12.0.0 |
| Alternative f => Alternative (Alt f) Источник | С версии: base-4.8.0.0 |
| (Alternative f, Applicative g) => Alternative (Compose f g) Source | Since: base-4.9.0.0 |
| (Alternative f, Applicative g) => Alternative (f :.: g) Source | Since: base-4.9.0.0 |
| Alternative f => Alternative (M1 i c f) Source | Since: base-4.9.0.0 |
Примеры
newtype Const a (b :: k) Source
Функтор Const.
Примеры
>>> fmap (++ "World") (Const "Hello") Const "Hello"
Поскольку мы игнорируем второй параметр типа в Const, экземпляр Applicative, который имеет (<*>) :: Monoid m => Const m (a -> b) -> Const m a -> Const m b, по существу преобразуется в Monoid m => m -> m -> m, что является (<>)
>>> Const [1, 2, 3] <*> Const [4, 5, 6] Const [1,2,3,4,5,6]
Экземпляры
| Generic1 (Const a :: k -> Type) Source | |||||
Определено в GHC.Internal.Data.Functor.Const Связанные типы
| |||||
| Bifoldable (Const :: Type -> Type -> Type) Source | Since: base-4.10.0.0 |
||||
| Bifoldable1 (Const :: Type -> Type -> Type) Source | |||||
Определено в Data.Bifoldable1 | |||||
| Bifunctor (Const :: Type -> Type -> Type) Source | Since: base-4.8.0.0 |
||||
| Bitraversable (Const :: Type -> Type -> Type) Source | Since: base-4.10.0.0 |
||||
Определено в Data.Bitraversable Методыbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Const a b -> f (Const c d) Source | |||||
| Eq2 (Const :: Type -> Type -> Type) Source | Since: base-4.9.0.0 |
||||
| Ord2 (Const :: Type -> Type -> Type) Источник | С: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Read2 (Const :: Type -> Type -> Type) Источник | С: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> Int -> ReadS (Const a b) Источник liftReadList2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> ReadS [Const a b] Источник liftReadPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (Const a b) Источник liftReadListPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [Const a b] Источник | |
| Show2 (Const :: Type -> Type -> Type) Источник | С: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Eq a => Eq1 (Const a :: Type -> Type) Источник | С: base-4.9.0.0 |
| Ord a => Ord1 (Const a :: Type -> Type) Источник | С: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Read a => Read1 (Const a :: Type -> Type) Source | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Const a a0) Source liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Const a a0] Source liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Const a a0) Source liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Const a a0] Source | |
| Show a => Show1 (Const a :: Type -> Type) Source | Since: base-4.9.0.0 |
| Contravariant (Const a :: Type -> Type) Source | |
| Monoid m => Applicative (Const m :: Type -> Type) Source | Since: base-2.0.1 |
Определено в GHC.Internal.Data.Functor.Const | |
| Functor (Const m :: Type -> Type) Source | Since: base-2.1 |
| Foldable (Const m :: Type -> Type) Источник | С версии: base-4.7.0.0 |
Определено в GHC.Internal.Data.Functor.Const Краткое описание методовfold :: Monoid m0 => Const m m0 -> m0 Источник foldMap :: Monoid m0 => (a -> m0) -> Const m a -> m0 Источник foldMap' :: Monoid m0 => (a -> m0) -> Const m a -> m0 Источник foldr :: (a -> b -> b) -> b -> Const m a -> b Источник foldr' :: (a -> b -> b) -> b -> Const m a -> b Источник foldl :: (b -> a -> b) -> b -> Const m a -> b Источник foldl' :: (b -> a -> b) -> b -> Const m a -> b Источник foldr1 :: (a -> a -> a) -> Const m a -> a Источник foldl1 :: (a -> a -> a) -> Const m a -> a Источник toList :: Const m a -> [a] Источник null :: Const m a -> Bool Источник length :: Const m a -> Int Источник elem :: Eq a => a -> Const m a -> Bool Источник maximum :: Ord a => Const m a -> a Источник minimum :: Ord a => Const m a -> a Источник | |
| Traversable (Const m :: Type -> Type) Источник | С версии: base-4.7.0.0 |
Определено в GHC.Internal.Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Const m a -> f (Const m b) Источник sequenceA :: Applicative f => Const m (f a) -> f (Const m a) Источник mapM :: Monad m0 => (a -> m0 b) -> Const m a -> m0 (Const m b) Источник sequence :: Monad m0 => Const m (m0 a) -> m0 (Const m a) Источник | |
| Monoid a => Monoid (Const a b) Источник | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методыmempty :: Const a b Исходный код mappend :: Const a b -> Const a b -> Const a b Исходный код mconcat :: [Const a b] -> Const a b Исходный код | |
| Semigroup a => Semigroup (Const a b) Исходный код | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методы(<>) :: Const a b -> Const a b -> Const a b Исходный код sconcat :: NonEmpty (Const a b) -> Const a b Исходный код stimes :: Integral b0 => b0 -> Const a b -> Const a b Исходный код | |
| Bits a => Bits (Const a b) Исходный код | С версии: base-4.9.0.0 |
| (Typeable k, Data a, Typeable b) => Data (Const a b) Source | Since: base-4.10.0.0 |
Defined in GHC.Internal.Data.Data Методыgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Const a b -> c (Const a b) Source gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Const a b) Source toConstr :: Const a b -> Constr Source dataTypeOf :: Const a b -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Const a b)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Const a b)) Source gmapT :: (forall b0. Data b0 => b0 -> b0) -> Const a b -> Const a b Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r Source gmapQ :: (forall d. Data d => d -> u) -> Const a b -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Const a b -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Source | |
| IsString a => IsString (Const a b) Source | Since: base-4.9.0.0 |
Defined in GHC.Internal.Data.String МетодыfromString :: String -> Const a b Source | |
| Bounded a => Bounded (Const a b) Source | Since: base-4.9.0.0 |
| Enum a => Enum (Const a b) Source | Since: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методыsucc :: Const a b -> Const a b Исходный код pred :: Const a b -> Const a b Исходный код toEnum :: Int -> Const a b Исходный код fromEnum :: Const a b -> Int Исходный код enumFrom :: Const a b -> [Const a b] Исходный код enumFromThen :: Const a b -> Const a b -> [Const a b] Исходный код enumFromTo :: Const a b -> Const a b -> [Const a b] Исходный код enumFromThenTo :: Const a b -> Const a b -> Const a b -> [Const a b] Исходный код | |
| Floating a => Floating (Const a b) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методыexp :: Const a b -> Const a b Источник log :: Const a b -> Const a b Источник sqrt :: Const a b -> Const a b Источник (**) :: Const a b -> Const a b -> Const a b Источник logBase :: Const a b -> Const a b -> Const a b Источник sin :: Const a b -> Const a b Источник cos :: Const a b -> Const a b Источник tan :: Const a b -> Const a b Источник asin :: Const a b -> Const a b Источник acos :: Const a b -> Const a b Источник atan :: Const a b -> Const a b Источник sinh :: Const a b -> Const a b Источник cosh :: Const a b -> Const a b Источник tanh :: Const a b -> Const a b Источник asinh :: Const a b -> Const a b Источник acosh :: Const a b -> Const a b Источник atanh :: Const a b -> Const a b Источник log1p :: Const a b -> Const a b Источник expm1 :: Const a b -> Const a b Источник | |
| RealFloat a => RealFloat (Const a b) Источник | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const МетодыreadsPrec :: Целое -> ReadS (Const a b) Исходный код readList :: ReadS [Const a b] Исходный код readPrec :: ReadPrec (Const a b) Исходный код readListPrec :: ReadPrec [Const a b] Исходный код | |
| Дробное a => Дробное (Const a b) Исходный код | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методы(/) :: Const a b -> Const a b -> Const a b Исходный код recip :: Const a b -> Const a b Исходный код fromRational :: Рациональное -> Const a b Исходный код | |
| Целочисленное a => Целочисленное (Const a b) Исходный код | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методыquot :: Const a b -> Const a b -> Const a b Исходный код rem :: Const a b -> Const a b -> Const a b Исходный код div :: Const a b -> Const a b -> Const a b Исходный код mod :: Const a b -> Const a b -> Const a b Исходный код quotRem :: Const a b -> Const a b -> (Const a b, Const a b) Исходный код divMod :: Const a b -> Const a b -> (Const a b, Const a b) Исходный код toInteger :: Const a b -> Целое Исходный код | |
| Действительное a => Действительное (Const a b) Исходный код | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const МетодыtoRational :: Const a b -> Рациональное Исходный код | |
| Действительная дробь a => Действительная дробь (Const a b) Исходный код | С версии: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const МетодыproperFraction :: Integral b0 => Const a b -> (b0, Const a b) Исходный код truncate :: Integral b0 => Const a b -> b0 Исходный код round :: Integral b0 => Const a b -> b0 Исходный код ceiling :: Integral b0 => Const a b -> b0 Исходный код floor :: Integral b0 => Const a b -> b0 Исходный код | |
| Show a => Show (Const a b) Исходный код |
Этот экземпляр был бы эквивалентен производным экземплярам С момента: base-4.8.0.0 |
Определено в GHC.Internal.Data.Functor.Const МетодыshowsPrec :: Int -> Const a b -> ShowS Исходный код show :: Const a b -> String Исходный код showList :: [Const a b] -> ShowS Исходный код | |
| Eq a => Eq (Const a b) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методы(==) :: Const a b -> Const a b -> Bool Исходный код (/=) :: Const a b -> Const a b -> Bool Исходный код | |
| Ord a => Ord (Const a b) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const Методыcompare :: Const a b -> Const a b -> Ordering Исходный код (<) :: Const a b -> Const a b -> Bool Исходный код (<=) :: Const a b -> Const a b -> Bool Исходный код (>) :: Const a b -> Const a b -> Bool Исходный код (>=) :: Const a b -> Const a b -> Bool Исходный код max :: Const a b -> Const a b -> Const a b Исходный код min :: Const a b -> Const a b -> Const a b Исходный код | |
| type Rep1 (Const a :: k -> Type) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const | |
| type Rep (Const a b) Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Data.Functor.Const | |
newtype ОборачиваемыйМонад (m :: Тип -> Тип) a Исходный код
Конструкторы
| WrapMonad | |
Поля
| |
Экземпляры
| Generic1 (WrappedMonad m :: Type -> Type) Источник | |||||
Определено в Control.Applicative Связанные типы
Методыfrom1 :: WrappedMonad m a -> Rep1 (WrappedMonad m) a Источник to1 :: Rep1 (WrappedMonad m) a -> WrappedMonad m a Источник | |||||
| MonadPlus m => Alternative (WrappedMonad m) Источник | С версии: base-2.1 |
||||
Определено в Control.Applicative Методыempty :: WrappedMonad m a Источник (<|>) :: WrappedMonad m a -> WrappedMonad m a -> WrappedMonad m a Источник some :: WrappedMonad m a -> WrappedMonad m [a] Источник many :: WrappedMonad m a -> WrappedMonad m [a] Источник | |||||
| Monad m => Applicative (WrappedMonad m) Источник | С версии: base-2.1 |
||||
Определено в Control.Applicative Методыpure :: a -> WrappedMonad m a Источник (<*>) :: WrappedMonad m (a -> b) -> WrappedMonad m a -> WrappedMonad m b Источник liftA2 :: (a -> b -> c) -> WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m c Источник (*>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b Источник (<*) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m 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 Источник | |||||
| Monad m => Monad (WrappedMonad m) Источник | С версии: base-4.7.0.0 |
||||
Определено в Control.Applicative Методы(>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b Source (>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b Source return :: a -> WrappedMonad m a Source | |
| (Typeable m, Typeable a, Data (m a)) => Data (WrappedMonad m a) Source | С версии: base-4.14.0.0 |
Определено в Control.Applicative Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonad m a -> c (WrappedMonad m a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonad m a) Source toConstr :: WrappedMonad m a -> Constr Source dataTypeOf :: WrappedMonad m a -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonad m a)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonad m a)) Source gmapT :: (forall b. Data b => b -> b) -> WrappedMonad m a -> WrappedMonad m a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonad m a -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonad m a -> r Source gmapQ :: (forall d. Data d => d -> u) -> WrappedMonad m a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> WrappedMonad m a -> u Source gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Source gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Source gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Source | |
| Generic (WrappedMonad m a) Source | |
Определено в Control.Applicative Связанные типы
Методыfrom :: WrappedMonad m a -> Rep (WrappedMonad m a) x Источник to :: Rep (WrappedMonad m a) x -> WrappedMonad m a Источник | |||||
| type Rep1 (WrappedMonad m :: Type -> Type) Источник | С момента: base-4.7.0.0 |
||||
Определено в Control.Applicative type Rep1 (WrappedMonad m :: Type -> Type) = D1 ('MetaData "WrappedMonad" "Control.Applicative" "base-4.21.0.0-8e62" 'True) (C1 ('MetaCons "WrapMonad" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 m))) | |||||
| type Rep (WrappedMonad m a) Источник | С момента: base-4.7.0.0 |
||||
Определено в Control.Applicative type Rep (WrappedMonad m a) = D1 ('MetaData "WrappedMonad" "Control.Applicative" "base-4.21.0.0-8e62" 'True) (C1 ('MetaCons "WrapMonad" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m a)))) | |||||
newtype WrappedArrow (a :: Type -> Type -> Type) b c Источник
Конструкторы
| WrapArrow | |
Поля
| |
Экземпляры
| Generic1 (WrappedArrow a b :: Type -> Type) Source | |||||
Определено в Control.Applicative Связанные типы
Методыfrom1 :: WrappedArrow a b a0 -> Rep1 (WrappedArrow a b) a0 Source to1 :: Rep1 (WrappedArrow a b) a0 -> WrappedArrow a b a0 Source | |||||
| (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b) Source | С момента: base-2.1 |
||||
Определено в Control.Applicative Методыempty :: WrappedArrow a b a0 Source (<|>) :: WrappedArrow a b a0 -> WrappedArrow a b a0 -> WrappedArrow a b a0 Source some :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Source many :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Source | |||||
| Arrow a => Applicative (WrappedArrow a b) Source | С момента: base-2.1 |
||||
Определено в Control.Applicative Методыpure :: a0 -> WrappedArrow a b a0 Source (<*>) :: WrappedArrow a b (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Source liftA2 :: (a0 -> b0 -> c) -> WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b c Source (*>) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b b0 Source (<*) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Source | |||||
| Arrow a => Functor (WrappedArrow a b) Source | С момента: base-2.1 |
||||
Определено в Control.Applicative Методыfmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Source (<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Source | |||||
| (Typeable a, Typeable b, Typeable c, Data (a b c)) => Data (WrappedArrow a b c) Source | С момента: base-4.14.0.0 |
||||
Определено в Control.Applicative Методыgfoldl :: (forall d b0. Data d => c0 (d -> b0) -> d -> c0 b0) -> (forall g. g -> c0 g) -> WrappedArrow a b c -> c0 (WrappedArrow a b c) Исходный код gunfold :: (forall b0 r. Data b0 => c0 (b0 -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (WrappedArrow a b c) Исходный код toConstr :: WrappedArrow a b c -> Constr Исходный код dataTypeOf :: WrappedArrow a b c -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (WrappedArrow a b c)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (WrappedArrow a b c)) Исходный код gmapT :: (forall b0. Data b0 => b0 -> b0) -> WrappedArrow a b c -> WrappedArrow a b c Исходный код | |||||
| Generic (WrappedArrow a b c) Исходный код | |||||
Определено в Control.Applicative Связанные типы
Методыfrom :: WrappedArrow a b c -> Rep (WrappedArrow a b c) x Исходный код to :: Rep (WrappedArrow a b c) x -> WrappedArrow a b c Исходный код | |||||
| type Rep1 (WrappedArrow a b :: Type -> Type) Исходный код | С версии: base-4.7.0.0 |
||||
Определено в Control.Applicative тип Rep1 (WrappedArrow a b :: Тип -> Тип) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.21.0.0-8e62" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (a b)))) | |
| тип Rep (WrappedArrow a b c) Исходный код | С момента: base-4.7.0.0 |
Определено в Control.Applicative тип Rep (WrappedArrow a b c) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.21.0.0-8e62" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a b c)))) | |
новый тип ZipList a Исходный код
Списки, но с Applicative фукнтором, основанным на объединении.
Примеры
В отличие от Applicative для List:
>>> (+) <$> [1, 2, 3] <*> [4, 5, 6] [5,6,7,6,7,8,7,8,9]
Экземпляр Applicative для ZipList применяет операцию, объединяя элементы, аналогично zipWithN
>>> (+) <$> ZipList [1, 2, 3] <*> ZipList [4, 5, 6]
ZipList {getZipList = [5,7,9]}
>>> (,,,) <$> ZipList [1, 2] <*> ZipList [3, 4] <*> ZipList [5, 6] <*> ZipList [7, 8]
ZipList {getZipList = [(1,3,5,7),(2,4,6,8)]}
>>> ZipList [(+1), (^2), (/ 2)] <*> ZipList [5, 5, 5]
ZipList {getZipList = [6.0,25.0,2.5]}
Конструкторы
| ZipList | |
Поля
| |
Примеры
| Alternative ZipList Исходный код | С момента: base-4.11.0.0 |
Определено в GHC.Internal.Functor.ZipList Методыempty :: ZipList a Исходный код (<|>) :: ZipList a -> ZipList a -> ZipList a Исходный код some :: ZipList a -> ZipList [a] Исходный код many :: ZipList a -> ZipList [a] Исходный код | |
| Applicative ZipList Исходный код |
f <$> ZipList xs1 <*> ... <*> ZipList xsN
= ZipList (zipWithN f xs1 ... xsN)
где (\a b c -> stimes c [a, b]) <$> ZipList "abcd" <*> ZipList "567" <*> ZipList [1..]
= ZipList (zipWith3 (\a b c -> stimes c [a, b]) "abcd" "567" [1..])
= ZipList {getZipList = ["a5","b6b6","c7c7c7"]}
С момента: base-2.1 |
Определено в GHC.Internal.Functor.ZipList Методыpure :: a -> ZipList a Исходный код (<*>) :: ZipList (a -> b) -> ZipList a -> ZipList b Исходный код liftA2 :: (a -> b -> c) -> ZipList a -> ZipList b -> ZipList c Исходный код (*>) :: ZipList a -> ZipList b -> ZipList b Исходный код (<*) :: ZipList a -> ZipList b -> ZipList a Исходный код | |
| Functor ZipList Исходный код | С момента: base-2.1 |
Определено в GHC.Internal.Functor.ZipList Методыfmap :: (a -> b) -> ZipList a -> ZipList b Исходный код (<$) :: a -> ZipList b -> ZipList a Исходный код | |
| Foldable ZipList Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Functor.ZipList Методыfold :: Monoid m => ZipList m -> m Исходный код foldMap :: Monoid m => (a -> m) -> ZipList a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> ZipList a -> m Исходный код foldr :: (a -> b -> b) -> b -> ZipList a -> b Исходный код foldr' :: (a -> b -> b) -> b -> ZipList a -> b Исходный код foldl :: (b -> a -> b) -> b -> ZipList a -> b Исходный код foldl' :: (b -> a -> b) -> b -> ZipList a -> b Исходный код foldr1 :: (a -> a -> a) -> ZipList a -> a Исходный код foldl1 :: (a -> a -> a) -> ZipList a -> a Исходный код toList :: ZipList a -> [a] Исходный код null :: ZipList a -> Boolean Исходный код length :: ZipList a -> Число Исходный код elem :: Eq a => a -> ZipList a -> Boolean Исходный код maximum :: Ord a => ZipList a -> a Исходный код minimum :: Ord a => ZipList a -> a Исходный код sum :: Num a => ZipList a -> a Исходный код product :: Num a => ZipList a -> a Исходный код | |
| Traversable ZipList Исходный код | С момента: base-4.9.0.0 |
Определено в GHC.Internal.Functor.ZipList Методыtraverse :: Applicative f => (a -> f b) -> ZipList a -> f (ZipList b) Исходный код sequenceA :: Applicative f => ZipList (f a) -> f (ZipList a) Исходный код mapM :: Monad m => (a -> m b) -> ZipList a -> m (ZipList b) Исходный код sequence :: Monad m => ZipList (m a) -> m (ZipList a) Исходный код | |
| Generic1 ZipList Исходный код | |
Определено в GHC.Internal.Functor.ZipList Связанные типы
Методыfrom1 :: ZipList a -> Rep1 ZipList a Исходный код to1 :: Rep1 ZipList a -> ZipList a Исходный код | |||||
| Data a => Data (ZipList a) Исходный код | С версии: base-4.14.0.0 |
||||
Определено в GHC.Internal.Functor.ZipList Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ZipList a -> c (ZipList a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ZipList a) Исходный код toConstr :: ZipList a -> Constr Исходный код dataTypeOf :: ZipList a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ZipList a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ZipList a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> ZipList a -> ZipList a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ZipList a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ZipList a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> ZipList a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> ZipList a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> ZipList a -> m (ZipList a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ZipList a -> m (ZipList a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ZipList a -> m (ZipList a) Исходный код | |||||
| Generic (ZipList a) Исходный код | |||||
Определено в GHC.Internal.Functor.ZipList Связанные типы
| |||||
| IsList (ZipList a) Источник | С тех пор: base-4.15.0.0 |
||||
Определено в GHC.Internal.IsList Связанные типы
| |||||
| Read a => Read (ZipList a) Источник | С тех пор: base-4.7.0.0 |
||||
| Show a => Show (ZipList a) Источник | С тех пор: base-4.7.0.0 |
||||
| Eq a => Eq (ZipList a) Источник | С тех пор: base-4.7.0.0 |
||||
| Ord a => Ord (ZipList a) Источник | С момента: base-4.7.0.0 |
Определено в GHC.Internal.Functor.ZipList Методыcompare :: ZipList a -> ZipList a -> Ordering Источник ( < ) :: ZipList a -> ZipList a -> Bool Источник ( <= ) :: ZipList a -> ZipList a -> Bool Источник ( > ) :: ZipList a -> ZipList a -> Bool Источник ( >= ) :: ZipList a -> ZipList a -> Bool Источник | |
| type Rep1 ZipList Источник | С момента: base-4.7.0.0 |
Определено в GHC.Internal.Functor.ZipList | |
| type Rep (ZipList a) Источник | С момента: base-4.7.0.0 |
Определено в GHC.Internal.Functor.ZipList | |
| type Item (ZipList a) Источник | |
Определено в GHC.Internal.IsList | |
Вспомогательные функции
(<$>) :: 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)
Замените все расположения ввода одинаковым значением. По умолчанию определено как fmap . const, но это может быть переопределено более эффективной версией.
Примеры
Выполните вычисление с Maybe и замените результат константным значением, если он Just:
>>> 'a' <$ Just 2 Just 'a' >>> 'a' <$ Nothing Nothing
(<**>) :: Applicative f => f a -> f (a -> b) -> f b infixl 4 Источник
Вариант <*> с обратным порядком типов аргументов. Он отличается от flip (<*>) тем, что эффекты разрешаются в порядке представления аргументов.
Примеры
>>> (<**>) (print 1) (id <$ print 2) 1 2
>>> flip (<*>) (print 1) (id <$ print 2) 2 1
>>> ZipList [4, 5, 6] <**> ZipList [(+1), (*2), (/3)]
ZipList {getZipList = [5.0,10.0,2.0]}
liftA :: Applicative f => (a -> b) -> f a -> f b Источник
Возвышение функции до действий. Эквивалентно fmap из Functor, но реализовано только с помощью методов Applicative: liftA f a = pure f <*> a
Таким образом, эта функция может использоваться для реализации экземпляра Functor из экземпляра Applicative
Примеры
Использование экземпляра Applicative для списков:
>>> liftA (+1) [1, 2] [2,3]
Или экземпляра Applicative для Maybe
>>> liftA (+1) (Just 3) Just 4
liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d Источник
Возвышение тернарной функции до действий.
optional :: Alternative f => f a -> f (Maybe a) Источник
Одна или ни одна.
Полезна для моделирования любого вычисления, которое может завершиться ошибкой.
Примеры
Используя экземпляр Alternative из Control.Monad.Except, следующие функции:
>>> import Control.Monad.Except
>>> canFail = throwError "it failed" :: Except String Int >>> final = return 42 :: Except String Int
Можно объединить, разрешив первой функции завершиться ошибкой:
>>> runExcept $ canFail *> final Left "it failed"
>>> runExcept $ optional canFail *> final Right 42
asum :: (Foldable t, Alternative f) => t (f a) -> f a Источник
Сумма набора действий с помощью (<|>), обобщая concat
asum аналогично msum, но обобщено до Alternative
Примеры
Базовое использование:
>>> asum [Just "Hello", Nothing, Just "World"] Just "Hello"
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/Control-Applicative.html