Spec-Zone.ru › Haskell 9

Control.Applicative

Авторские права Conor McBride and Ross Paterson 2005
Лицензия в стиле BSD (см. файл LICENSE в дистрибутиве)
Сопровождающий libraries@haskell.org
Стабильность стабильный
Переносимость переносимый
Безопасный Haskell доверенный
Язык Haskell2010

Содержание

  • Аппликативные функторы
  • Альтернативы
  • Экземпляры
  • Вспомогательные функции

Описание

Этот модуль описывает структуру, промежуточную между функтором и монадой (технически — сильный слабый моноидальный функтор). По сравнению с монадами, в этом интерфейсе отсутствует вся мощь операции связывания >>=, однако

  • у него больше экземпляров.
  • его достаточно для многих применений, например для контекстно-свободного синтаксического анализа или класса Traversable.
  • экземпляры могут анализировать вычисления до их выполнения и тем самым создавать общие оптимизации.

Этот интерфейс был введён для парсеров Никласом Рёьемо, поскольку он допускает больше совместного использования, чем монадический интерфейс. Приведённые здесь имена в основном основаны на работах Доайтсе Свирстры по синтаксическому анализу.

Подробнее см. Аппликативное программирование с эффектами Коннора Макбрайда и Росса Патерсона.

Аппликативные функторы

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

Для остальных методов заданы следующие определения по умолчанию, которые можно переопределить эквивалентными специализированными реализациями:

  • u *> v = (id <$ u) <*> v
  • u <* v = liftA2 const u v

Следствием этих законов является то, что экземпляр Functor для f будет удовлетворять условию

  • fmap f x = pure f <*> x

Полезно отметить, что если предположить

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 = return
  • m1 <*> m2 = m1 >>= (\x1 -> m2 >>= (\x2 -> return (x1 x2)))
  • (*>) = (>>)

(из чего следует, что pure и <*> удовлетворяют законам аппликативных функторов).

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

pure, ((<*>) | liftA2)

Методы

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 Источник

Упорядочить действия, отбросив значение первого аргумента.

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

В сочетании с аппликативным экземпляром для 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

Методы

pure :: a -> Complex a Источник

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

liftA2 :: (a -> b -> c) -> Complex a -> Complex b -> Complex c Источник

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

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

Applicative First Источник

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

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

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

Методы

pure :: a -> First a Источник

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

liftA2 :: (a -> b -> c) -> First a -> First b -> First c Источник

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

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

Applicative Last Источник

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

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

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

Методы

pure :: a -> Last a Источник

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

liftA2 :: (a -> b -> c) -> Last a -> Last b -> Last c Источник

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

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

Applicative Max Источник

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

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

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

Методы

pure :: a -> Max a Источник

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

liftA2 :: (a -> b -> c) -> Max a -> Max b -> Max c Источник

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

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

Applicative Min Источник

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

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

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

Методы

pure :: a -> Min a Источник

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

liftA2 :: (a -> b -> c) -> Min a -> Min b -> Min c Источник

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

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

Applicative NonEmpty Источник

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

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

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

Методы

pure :: a -> NonEmpty a Источник

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

liftA2 :: (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c Источник

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

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

Applicative STM Источник

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

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

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

Методы

pure :: a -> STM a Источник

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

liftA2 :: (a -> b -> c) -> STM a -> STM b -> STM c Источник

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

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

Applicative Identity Источник

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

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

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

Методы

pure :: a -> Identity a Источник

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

liftA2 :: (a -> b -> c) -> Identity a -> Identity b -> Identity c Источник

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

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

Applicative First Источник

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

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

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

Методы

pure :: a -> First a Источник

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

liftA2 :: (a -> b -> c) -> First a -> First b -> First c Источник

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

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

Applicative Last Источник

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

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

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

Методы

pure :: a -> Last a Источник

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

liftA2 :: (a -> b -> c) -> Last a -> Last b -> Last c Источник

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

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

Applicative Down Источник

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

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

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

Методы

pure :: a -> Down a Источник

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

liftA2 :: (a -> b -> c) -> Down a -> Down b -> Down c Источник

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

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

Applicative Dual Источник

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

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

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

Методы

pure :: a -> Dual a Исходный код

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

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

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

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

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

Начиная с: 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)

где zipWithN означает функцию zipWith соответствующей арности (zipWith, zipWith3, zipWith4, ...). Например:

(\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

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

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

Методы

pure :: a -> Par1 a Исходный код

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

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

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

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

Applicative Q Исходный код
Подробности экземпляра

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

Методы

pure :: a -> Q a Исходный код

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

liftA2 :: (a -> b -> c) -> Q a -> Q b -> Q c Исходный код

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

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

Applicative P Исходный код

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

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

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

Методы

pure :: a -> P a Исходный код

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

liftA2 :: (a -> b -> c) -> P a -> P b -> P c Исходный код

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

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

Applicative ReadP Исходный код

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

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

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

Методы

pure :: a -> ReadP a Исходный код

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

liftA2 :: (a -> b -> c) -> ReadP a -> ReadP b -> ReadP c Исходный код

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

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

Applicative ReadPrec Исходный код

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

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

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

Методы

pure :: a -> ReadPrec a Исходный код

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

liftA2 :: (a -> b -> c) -> ReadPrec a -> ReadPrec b -> ReadPrec c Исходный код

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

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

Applicative IO Исходный код

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

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

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

Методы

pure :: a -> IO a Исходный код

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

liftA2 :: (a -> b -> c) -> IO a -> IO b -> IO c Исходный код

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

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

Applicative Maybe Исходный код

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

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

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

Методы

pure :: a -> Maybe a Исходный код

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

liftA2 :: (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c Исходный код

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

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

Applicative Solo Исходный код

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

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

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

Методы

pure :: a -> Solo a Исходный код

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

liftA2 :: (a -> b -> c) -> Solo a -> Solo b -> Solo c Исходный код

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

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

Applicative [] Исходный код

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

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

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

Методы

pure :: a -> [a] Исходный код

(<*>) :: [a -> b] -> [a] -> [b] Исходный код

liftA2 :: (a -> b -> c) -> [a] -> [b] -> [c] Исходный код

(*>) :: [a] -> [b] -> [b] Исходный код

(<*) :: [a] -> [b] -> [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 Исходный код

Arrow a => Applicative (ArrowMonad a) Исходный код

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

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

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

Методы

pure :: a0 -> ArrowMonad a a0 Исходный код

(<*>) :: ArrowMonad a (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b Исходный код

liftA2 :: (a0 -> b -> c) -> ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a c Исходный код

(*>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b Исходный код

(<*) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a a0 Исходный код

Applicative (ST s) Исходный код

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

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

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

Методы

pure :: a -> ST s a Исходный код

(<*>) :: ST s (a -> b) -> ST s a -> ST s b Исходный код

liftA2 :: (a -> b -> c) -> ST s a -> ST s b -> ST s c Исходный код

(*>) :: ST s a -> ST s b -> ST s b Исходный код

(<*) :: ST s a -> ST s b -> ST s a Исходный код

Applicative (Either e) Исходный код

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

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

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

Методы

pure :: a -> Either e a Исходный код

(<*>) :: Either e (a -> b) -> Either e a -> Either e b Исходный код

liftA2 :: (a -> b -> c) -> Either e a -> Either e b -> Either e c Исходный код

(*>) :: Either e a -> Either e b -> Either e b Исходный код

(<*) :: Either e a -> Either e b -> Either e a Исходный код

Applicative (StateL s) Исходный код

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

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

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

Методы

pure :: a -> StateL s a Исходный код

(<*>) :: StateL s (a -> b) -> StateL s a -> StateL s b Исходный код

liftA2 :: (a -> b -> c) -> StateL s a -> StateL s b -> StateL s c Исходный код

(*>) :: StateL s a -> StateL s b -> StateL s b Исходный код

(<*) :: StateL s a -> StateL s b -> StateL s a Исходный код

Applicative (StateR s) Исходный код

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

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

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

Методы

pure :: a -> StateR s a Исходный код

(<*>) :: StateR s (a -> b) -> StateR s a -> StateR s b Исходный код

liftA2 :: (a -> b -> c) -> StateR s a -> StateR s b -> StateR s c Исходный код

(*>) :: StateR s a -> StateR s b -> StateR s b Исходный код

(<*) :: StateR s a -> StateR s b -> StateR s a Исходный код

Applicative (Proxy :: Type -> Type) Исходный код

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

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

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

Методы

pure :: a -> Proxy a Исходный код

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

liftA2 :: (a -> b -> c) -> Proxy a -> Proxy b -> Proxy c Исходный код

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

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

Applicative (U1 :: Type -> Type) Исходный код

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

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

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

Методы

pure :: a -> U1 a Исходный код

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

liftA2 :: (a -> b -> c) -> U1 a -> U1 b -> U1 c Исходный код

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

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

Applicative (ST s) Исходный код

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

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

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

Методы

pure :: a -> ST s a Исходный код

(<*>) :: ST s (a -> b) -> ST s a -> ST s b Исходный код

liftA2 :: (a -> b -> c) -> ST s a -> ST s b -> ST s c Исходный код

(*>) :: ST s a -> ST s b -> ST s b Исходный код

(<*) :: ST s a -> ST s b -> ST s a Исходный код

Monoid a => Applicative ((,) a) Исходный код

Для кортежей ограничение Monoid на a определяет, как объединяются первые значения. Например, Stringы конкатенируются:

("hello ", (+15)) <*> ("world!", 2002)
("hello world!",2017)

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

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

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

Методы

pure :: a0 -> (a, a0) Исходный код

(<*>) :: (a, a0 -> b) -> (a, a0) -> (a, b) Исходный код

liftA2 :: (a0 -> b -> c) -> (a, a0) -> (a, b) -> (a, c) Исходный код

(*>) :: (a, a0) -> (a, b) -> (a, b) Исходный код

(<*) :: (a, a0) -> (a, b) -> (a, a0) Исходный код

Arrow a => Applicative (WrappedArrow a b) Исходный код

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

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

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

Методы

pure :: a0 -> WrappedArrow a b a0 Исходный код

(<*>) :: WrappedArrow a b (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Исходный код

liftA2 :: (a0 -> b0 -> c) -> WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b c Исходный код

(*>) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b b0 Исходный код

(<*) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Исходный код

Applicative m => Applicative (Kleisli m a) Исходный код

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

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

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

Методы

pure :: a0 -> Kleisli m a a0 Исходный код

(<*>) :: Kleisli m a (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b Исходный код

liftA2 :: (a0 -> b -> c) -> Kleisli m a a0 -> Kleisli m a b -> Kleisli m a c Исходный код

(*>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b Исходный код

(<*) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a a0 Исходный код

Monoid m => Applicative (Const m :: Type -> Type) Исходный код

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

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

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

Методы

pure :: a -> Const m a Исходный код

(<*>) :: Const m (a -> b) -> Const m a -> Const m b Исходный код

liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c Исходный код

(*>) :: Const m a -> Const m b -> Const m b Исходный код

(<*) :: Const m a -> Const m b -> Const m a Исходный код

Monad m => Applicative (StateT s m) Исходный код

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

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

Определено в 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 Исходный код

(Monoid a, Monoid 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 :: Type -> Type) Исходный код

Начиная с: 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 Исходный код

(Monoid a, Monoid b, Monoid 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 :: Type -> Type) where Исходный код

Моноид на аппликативных функторах.

Если они определены, some и many должны быть наименьшими решениями уравнений:

  • some v = (:) <$> v <*> many v
  • many v = some v <|> pure []
Примеры
Развернуть
>>> Nothing <|> Just 42
Just 42
>>> [1, 2] <|> [3, 4]
[1,2,3,4]
>>> empty <|> print (2^15)
32768

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

empty, (<|>)

Методы

empty :: f a Source

Нейтральный элемент для <|>

empty <|> a     == a
a     <|> empty == a

(<|>) :: f a -> f a -> f a infixl 3 Source

Ассоциативная бинарная операция

some :: f a -> f [a] Source

Один или несколько.

Примеры
Развернуть
>>> some (putStr "la")
lalalalalalalalala... * goes on forever *
>>> some Nothing
nothing
>>> take 5 <$> some (Just 1)
* hangs forever *

Обратите внимание, что эту функцию можно использовать с парсерами на основе Applicative. В этом случае some parser будет пытаться разбирать parser один или несколько раз, пока не завершится неудачей.

many :: f a -> f [a] Source

Ноль или более.

Примеры
Развернуть
>>> many (putStr "la")
lalalalalalalalala... * goes on forever *
>>> many Nothing
Just []
>>> take 5 <$> many (Just 1)
* hangs forever *

Обратите внимание, что эту функцию можно использовать с парсерами на основе Applicative. В этом случае many parser будет пытаться разбирать parser ноль или более раз, пока не завершится неудачей.

Экземпляры
Подробные сведения об экземплярах
Alternative STM Источник

Выбирает первое действие, не завершающееся retry, из STM.

С версии: base-4.8.0.0

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

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

Методы

empty :: STM a Источник

(<|>) :: STM a -> STM a -> STM a Источник

some :: STM a -> STM [a] Источник

many :: STM a -> STM [a] Источник

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] Источник

Alternative P Источник

С версии: base-4.5.0.0

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

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

Методы

empty :: P a Источник

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

some :: P a -> P [a] Источник

many :: P a -> P [a] Источник

Alternative ReadP Источник

С версии: base-4.6.0.0

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

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

Методы

empty :: ReadP a Источник

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

some :: ReadP a -> ReadP [a] Источник

many :: ReadP a -> ReadP [a] Источник

Alternative ReadPrec Источник

С версии: base-4.6.0.0

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

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

Методы

empty :: ReadPrec a Источник

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

some :: ReadPrec a -> ReadPrec [a] Источник

many :: ReadPrec a -> ReadPrec [a] Источник

Alternative IO Источник

Возвращает результат первого действия IO, не вызывающего исключение. empty вызывает исключение.

С версии: base-4.9.0.0

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

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

Методы

empty :: IO a Источник

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

some :: IO a -> IO [a] Источник

many :: IO a -> IO [a] Источник

Alternative Maybe Источник

Выбирает самое левое значение Just или, в качестве альтернативы, Nothing.

С версии: base-2.1

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

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

Методы

empty :: Maybe a Источник

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

some :: Maybe a -> Maybe [a] Источник

many :: Maybe a -> Maybe [a] Источник

Alternative [] Источник

Объединяет списки конкатенацией, начиная с пустого списка.

С версии: base-2.1

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

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

Методы

empty :: [a] Источник

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

some :: [a] -> [[a]] Источник

many :: [a] -> [[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] Источник

ArrowPlus a => Alternative (ArrowMonad a) Источник

С версии: base-4.6.0.0

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

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

Методы

empty :: ArrowMonad a a0 Источник

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

some :: ArrowMonad a a0 -> ArrowMonad a [a0] Источник

many :: ArrowMonad a a0 -> ArrowMonad a [a0] Источник

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

С версии: base-4.9.0.0

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

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

Методы

empty :: Proxy a Источник

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

some :: Proxy a -> Proxy [a] Источник

many :: Proxy a -> Proxy [a] Источник

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

С версии: base-4.9.0.0

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

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

Методы

empty :: U1 a Источник

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

some :: U1 a -> U1 [a] Источник

many :: U1 a -> U1 [a] Источник

(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

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

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

Методы

empty :: Kleisli m a a0 Исходный код

(<|>) :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 Исходный код

some :: Kleisli m a a0 -> Kleisli m a [a0] Исходный код

many :: Kleisli m a a0 -> Kleisli m a [a0] Исходный код

Alternative f => Alternative (Ap f) Исходный код

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

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

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

Методы

empty :: Ap f a Исходный код

(<|>) :: Ap f a -> Ap f a -> Ap f a Исходный код

some :: Ap f a -> Ap f [a] Исходный код

many :: Ap f a -> Ap f [a] Исходный код

Alternative f => Alternative (Alt f) Исходный код

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

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

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

Методы

empty :: Alt f a Исходный код

(<|>) :: Alt f a -> Alt f a -> Alt f a Исходный код

some :: Alt f a -> Alt f [a] Исходный код

many :: Alt f a -> Alt f [a] Исходный код

(Generic1 f, Alternative (Rep1 f)) => Alternative (Generically1 f) Исходный код

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

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

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

Методы

empty :: Generically1 f a Исходный код

(<|>) :: Generically1 f a -> Generically1 f a -> Generically1 f a Исходный код

some :: Generically1 f a -> Generically1 f [a] Исходный код

many :: Generically1 f a -> Generically1 f [a] Исходный код

Alternative f => Alternative (Rec1 f) Исходный код

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

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

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

Методы

empty :: Rec1 f a Исходный код

(<|>) :: Rec1 f a -> Rec1 f a -> Rec1 f a Исходный код

some :: Rec1 f a -> Rec1 f [a] Исходный код

many :: Rec1 f a -> Rec1 f [a] Исходный код

(Alternative f, Alternative g) => Alternative (Product f g) Исходный код

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

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

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

Методы

empty :: Product f g a Исходный код

(<|>) :: Product f g a -> Product f g a -> Product f g a Исходный код

some :: Product f g a -> Product f g [a] Исходный код

many :: Product f g a -> Product f g [a] Исходный код

(Alternative f, Alternative g) => Alternative (f :*: g) Исходный код

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

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

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

Методы

empty :: (f :*: g) a Исходный код

(<|>) :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a Исходный код

some :: (f :*: g) a -> (f :*: g) [a] Исходный код

many :: (f :*: g) a -> (f :*: g) [a] Исходный код

(Alternative f, Applicative g) => Alternative (Compose f g) Исходный код

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

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

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

Методы

empty :: Compose f g a Исходный код

(<|>) :: Compose f g a -> Compose f g a -> Compose f g a Исходный код

some :: Compose f g a -> Compose f g [a] Исходный код

many :: Compose f g a -> Compose f g [a] Исходный код

(Alternative f, Applicative g) => Alternative (f :.: g) Исходный код

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

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

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

Методы

empty :: (f :.: g) a Исходный код

(<|>) :: (f :.: g) a -> (f :.: g) a -> (f :.: g) a Исходный код

some :: (f :.: g) a -> (f :.: g) [a] Исходный код

many :: (f :.: g) a -> (f :.: g) [a] Исходный код

Alternative f => Alternative (M1 i c f) Исходный код

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

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

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

Методы

empty :: M1 i c f a Исходный код

(<|>) :: M1 i c f a -> M1 i c f a -> M1 i c f a Исходный код

some :: M1 i c f a -> M1 i c f [a] Исходный код

many :: M1 i c f a -> M1 i c f [a] Исходный код

Экземпляры

newtype Const a (b :: k) Исходный код

Функтор 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]

Конструкторы

Const

Поля

  • getConst :: a
Экземпляры
Подробности экземпляров
Generic1 (Const a :: k -> Type) Источник
Подробности экземпляра

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

Связанные типы

type Rep1 (Const a :: k -> Type)

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

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

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

type Rep1 (Const a :: k -> Type) = D1 ('MetaData "Const" "GHC.Internal.Data.Functor.Const" "ghc-internal" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Методы

from1 :: forall (a0 :: k). Const a a0 -> Rep1 (Const a :: k -> Type) a0 Источник

to1 :: forall (a0 :: k). Rep1 (Const a :: k -> Type) a0 -> Const a a0 Источник

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

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

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

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

Методы

bifold :: Monoid m => Const m m -> m Источник

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

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

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

Bifoldable1 (Const :: Type -> Type -> Type) Источник
Подробности экземпляра

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

Методы

bifold1 :: Semigroup m => Const m m -> m Источник

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

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

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

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

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

Методы

bimap :: (a -> b) -> (c -> d) -> Const a c -> Const b d Источник

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

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

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

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

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

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

Методы

bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Const a b -> f (Const c d) Источник

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

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

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

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

Методы

liftEq2 :: (a -> b -> Bool) -> (c -> d -> Bool) -> Const a c -> Const b d -> Bool Источник

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

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

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

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

Методы

liftCompare2 :: (a -> b -> Ordering) -> (c -> d -> Ordering) -> Const a c -> Const b d -> Ordering Источник

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

Методы

liftShowsPrec2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> Int -> Const a b -> ShowS Источник

liftShowList2 :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> (Int -> b -> ShowS) -> ([b] -> ShowS) -> [Const a b] -> ShowS Источник

Eq a => Eq1 (Const a :: Type -> Type) Источник

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

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

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

Методы

liftEq :: (a0 -> b -> Bool) -> Const a a0 -> Const a b -> Bool Источник

Ord a => Ord1 (Const a :: Type -> Type) Источник

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

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

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

Методы

liftCompare :: (a0 -> b -> Ordering) -> Const a a0 -> Const a b -> Ordering Источник

Read a => Read1 (Const a :: Type -> Type) Источник

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

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

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

Методы

liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Const a a0) Источник

liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Const a a0] Источник

liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Const a a0) Источник

liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Const a a0] Источник

Show a => Show1 (Const a :: Type -> Type) Источник

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

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

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

Методы

liftShowsPrec :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> Int -> Const a a0 -> ShowS Источник

liftShowList :: (Int -> a0 -> ShowS) -> ([a0] -> ShowS) -> [Const a a0] -> ShowS Источник

Contravariant (Const a :: Type -> Type) Источник
Подробности экземпляра

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

Методы

contramap :: (a' -> a0) -> Const a a0 -> Const a a' Источник

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

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

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

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

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

Методы

pure :: a -> Const m a Исходный код

(<*>) :: Const m (a -> b) -> Const m a -> Const m b Исходный код

liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c Исходный код

(*>) :: Const m a -> Const m b -> Const m b Исходный код

(<*) :: Const m a -> Const m b -> Const m a Исходный код

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 Исходный код

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 Исходный код

sum :: Num a => Const m a -> a Исходный код

product :: Num 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

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

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

Методы

(.&.) :: Const a b -> Const a b -> Const a b Исходный код

(.|.) :: Const a b -> Const a b -> Const a b Исходный код

xor :: Const a b -> Const a b -> Const a b Исходный код

complement :: Const a b -> Const a b Исходный код

shift :: Const a b -> Int -> Const a b Исходный код

rotate :: Const a b -> Int -> Const a b Исходный код

zeroBits :: Const a b Исходный код

bit :: Int -> Const a b Исходный код

setBit :: Const a b -> Int -> Const a b Исходный код

clearBit :: Const a b -> Int -> Const a b Исходный код

complementBit :: Const a b -> Int -> Const a b Исходный код

testBit :: Const a b -> Int -> Bool Исходный код

bitSizeMaybe :: Const a b -> Maybe Int Исходный код

bitSize :: Const a b -> Int Исходный код

isSigned :: Const a b -> Bool Исходный код

shiftL :: Const a b -> Int -> Const a b Исходный код

unsafeShiftL :: Const a b -> Int -> Const a b Исходный код

shiftR :: Const a b -> Int -> Const a b Исходный код

unsafeShiftR :: Const a b -> Int -> Const a b Исходный код

rotateL :: Const a b -> Int -> Const a b Исходный код

rotateR :: Const a b -> Int -> Const a b Исходный код

popCount :: Const a b -> Int Исходный код

FiniteBits a => FiniteBits (Const a b) Исходный код

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

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

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

Методы

finiteBitSize :: Const a b -> Int Исходный код

countLeadingZeros :: Const a b -> Int Исходный код

countTrailingZeros :: Const a b -> Int Исходный код

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 Исходный код

(Typeable k, Data a, Typeable b) => Data (Const a b) Исходный код

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

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

Определено в 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) Исходный код

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Const a b) Исходный код

toConstr :: Const a b -> Constr Исходный код

dataTypeOf :: Const a b -> DataType Исходный код

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Const a b)) Исходный код

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Const a b)) Исходный код

gmapT :: (forall b0. Data b0 => b0 -> b0) -> Const a b -> Const a b Исходный код

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r Исходный код

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r Исходный код

gmapQ :: (forall d. Data d => d -> u) -> Const a b -> [u] Исходный код

gmapQi :: Int -> (forall d. Data d => d -> u) -> Const a b -> u Исходный код

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Исходный код

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Исходный код

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) Исходный код

IsString a => IsString (Const a b) Исходный код

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

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

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

Методы

fromString :: String -> Const a b Исходный код

Bounded a => Bounded (Const a b) Исходный код

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

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

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

Методы

minBound :: Const a b Исходный код

maxBound :: Const a b Исходный код

Enum a => Enum (Const a b) Исходный код

Начиная с: 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

Методы

pi :: Const a b Исходный код

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 Исходный код

log1pexp :: Const a b -> Const a b Исходный код

log1mexp :: Const a b -> Const a b Исходный код

RealFloat a => RealFloat (Const a b) Исходный код

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

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

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

Методы

floatRadix :: Const a b -> Integer Источник

floatDigits :: Const a b -> Int Источник

floatRange :: Const a b -> (Int, Int) Источник

decodeFloat :: Const a b -> (Integer, Int) Источник

encodeFloat :: Integer -> Int -> Const a b Источник

exponent :: Const a b -> Int Источник

significand :: Const a b -> Const a b Источник

scaleFloat :: Int -> Const a b -> Const a b Источник

isNaN :: Const a b -> Bool Источник

isInfinite :: Const a b -> Bool Источник

isDenormalized :: Const a b -> Bool Источник

isNegativeZero :: Const a b -> Bool Источник

isIEEE :: Const a b -> Bool Источник

atan2 :: Const a b -> Const a b -> Const a b Источник

Storable a => Storable (Const a b) Источник

С версии: base-4.9.0.0

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

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

Методы

sizeOf :: Const a b -> Int Источник

alignment :: Const a b -> Int Источник

peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b) Источник

pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO () Источник

peekByteOff :: Ptr b0 -> Int -> IO (Const a b) Источник

pokeByteOff :: Ptr b0 -> Int -> Const a b -> IO () Источник

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

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

Generic (Const a b) Источник
Подробности экземпляра

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

Связанные типы

type Rep (Const a b)

С версии: base-4.9.0.0

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

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

type Rep (Const a b) = D1 ('MetaData "Const" "GHC.Internal.Data.Functor.Const" "ghc-internal" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Методы

from :: Const a b -> Rep (Const a b) x Источник

to :: Rep (Const a b) x -> Const a b Источник

Ix a => Ix (Const a b) Источник

С версии: base-4.9.0.0

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

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

Методы

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

index :: (Const a b, Const a b) -> Const a b -> Int Источник

unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int Источник

inRange :: (Const a b, Const a b) -> Const a b -> Bool Источник

rangeSize :: (Const a b, Const a b) -> Int Источник

unsafeRangeSize :: (Const a b, Const a b) -> Int Источник

Num a => Num (Const a b) Источник

С версии: base-4.9.0.0

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

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

Методы

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

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

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

negate :: Const a b -> Const a b Источник

abs :: Const a b -> Const a b Источник

signum :: Const a b -> Const a b Источник

fromInteger :: Integer -> Const a b Источник

Read a => Read (Const a b) Источник

Этот экземпляр был бы эквивалентен выведенным экземплярам нового типа Const, если бы поле getConst было удалено

С версии: base-4.8.0.0

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

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

Методы

readsPrec :: Int -> ReadS (Const a b) Источник

readList :: ReadS [Const a b] Источник

readPrec :: ReadPrec (Const a b) Источник

readListPrec :: ReadPrec [Const a b] Источник

Fractional a => Fractional (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 :: Rational -> Const a b Источник

Integral a => Integral (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 -> Integer Источник

Real a => Real (Const a b) Источник

С версии: base-4.9.0.0

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

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

Методы

toRational :: Const a b -> Rational Источник

RealFrac a => RealFrac (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) Источник

Этот экземпляр был бы эквивалентен производным экземплярам нового типа Const, если бы поле getConst было удалено

Начиная с: 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 Источник

type Rep1 (Const a :: k -> Type) Источник

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

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

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

type Rep1 (Const a :: k -> Type) = D1 ('MetaData "Const" "GHC.Internal.Data.Functor.Const" "ghc-internal" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type Rep (Const a b) Источник

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

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

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

type Rep (Const a b) = D1 ('MetaData "Const" "GHC.Internal.Data.Functor.Const" "ghc-internal" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

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

Конструкторы

WrapMonad

Поля

  • unwrapMonad :: m a
Экземпляры
Подробная информация об экземплярах
Generic1 (WrappedMonad m :: Type -> Type) Исходный код
Подробная информация об экземпляре

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

Связанные типы

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.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapMonad" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 m)))

Методы

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 Исходный код

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

return :: a -> WrappedMonad m a Исходный код

(Typeable m, Typeable a, Data (m a)) => Data (WrappedMonad m a) Исходный код

Начиная с: 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) Исходный код

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonad m a) Исходный код

toConstr :: WrappedMonad m a -> Constr Исходный код

dataTypeOf :: WrappedMonad m a -> DataType Исходный код

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonad m a)) Исходный код

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonad m a)) Исходный код

gmapT :: (forall b. Data b => b -> b) -> WrappedMonad m a -> WrappedMonad m a Исходный код

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonad m a -> r Исходный код

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonad m a -> r Исходный код

gmapQ :: (forall d. Data d => d -> u) -> WrappedMonad m a -> [u] Исходный код

gmapQi :: Int -> (forall d. Data d => d -> u) -> WrappedMonad m a -> u Исходный код

gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Исходный код

gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Исходный код

gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonad m a -> m0 (WrappedMonad m a) Исходный код

Generic (WrappedMonad m a) Исходный код
Подробная информация об экземпляре

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

Связанные типы

type Rep (WrappedMonad m a)

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

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

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

type Rep (WrappedMonad m a) = D1 ('MetaData "WrappedMonad" "Control.Applicative" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapMonad" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m a))))

Методы

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.22.0.0-66f8" '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.22.0.0-66f8" '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

Поля

  • unwrapArrow :: a b c
Экземпляры
Подробности экземпляров
Generic1 (WrappedArrow a b :: Type -> Type) Источник
Подробности экземпляра

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

Связанные типы

type Rep1 (WrappedArrow a b :: Type -> Type)

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

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

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

type Rep1 (WrappedArrow a b :: Type -> Type) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (a b))))

Методы

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

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

(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] Источник

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

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

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

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

Методы

pure :: a0 -> WrappedArrow a b a0 Источник

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

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

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

(<*) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b 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 Источник

(Typeable a, Typeable b, Typeable c, Data (a b c)) => Data (WrappedArrow a b c) Источник

Начиная с: 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 Источник

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedArrow a b c -> r Источник

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedArrow a b c -> r Источник

gmapQ :: (forall d. Data d => d -> u) -> WrappedArrow a b c -> [u] Источник

gmapQi :: Int -> (forall d. Data d => d -> u) -> WrappedArrow a b c -> u Источник

gmapM :: Monad m => (forall d. Data d => d -> m d) -> WrappedArrow a b c -> m (WrappedArrow a b c) Источник

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> WrappedArrow a b c -> m (WrappedArrow a b c) Источник

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> WrappedArrow a b c -> m (WrappedArrow a b c) Источник

Generic (WrappedArrow a b c) Источник
Подробности экземпляра

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

Связанные типы

type Rep (WrappedArrow a b c)

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

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

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

type Rep (WrappedArrow a b c) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a b c))))

Методы

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

type Rep1 (WrappedArrow a b :: Type -> Type) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (a b))))
type Rep (WrappedArrow a b c) Источник

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

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

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

type Rep (WrappedArrow a b c) = D1 ('MetaData "WrappedArrow" "Control.Applicative" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapArrow" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapArrow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a b c))))

newtype 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

Поля

  • getZipList :: [a]
Экземпляры
Подробности экземпляров
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)

где zipWithN обозначает функцию zipWith соответствующей арности (zipWith, zipWith3, zipWith4, ...). Например:

(\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 -> Bool Источник

length :: ZipList a -> Int Источник

elem :: Eq a => a -> ZipList a -> Bool Источник

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

Связанные типы

type Rep1 ZipList

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

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

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

type Rep1 ZipList = D1 ('MetaData "ZipList" "GHC.Internal.Functor.ZipList" "ghc-internal" 'True) (C1 ('MetaCons "ZipList" 'PrefixI 'True) (S1 ('MetaSel ('Just "getZipList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 [])))

Методы

from1 :: ZipList a -> Rep1 ZipList a Источник

to1 :: Rep1 ZipList a -> ZipList a Источник

Eq a => Eq (ZipList a) Источник

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

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

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

Методы

(==) :: ZipList a -> ZipList a -> Bool Источник

(/=) :: ZipList a -> ZipList a -> Bool Источник

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 Источник

max :: ZipList a -> ZipList a -> ZipList a Источник

min :: ZipList a -> 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

Ассоциированные типы

type Rep (ZipList a)

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

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

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

type Rep (ZipList a) = D1 ('MetaData "ZipList" "GHC.Internal.Functor.ZipList" "ghc-internal" 'True) (C1 ('MetaCons "ZipList" 'PrefixI 'True) (S1 ('MetaSel ('Just "getZipList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))

Методы

from :: ZipList a -> Rep (ZipList a) x Источник

to :: Rep (ZipList a) x -> ZipList a Источник

IsList (ZipList a) Источник

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

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

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

Ассоциированные типы

type Item (ZipList a)
Сведения об экземпляре

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

type Item (ZipList a) = a

Методы

fromList :: [Item (ZipList a)] -> ZipList a Источник

fromListN :: Int -> [Item (ZipList a)] -> ZipList a Источник

toList :: ZipList a -> [Item (ZipList a)] Источник

Read a => Read (ZipList a) Источник

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

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

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

Методы

readsPrec :: Int -> ReadS (ZipList a) Источник

readList :: ReadS [ZipList a] Источник

readPrec :: ReadPrec (ZipList a) Источник

readListPrec :: ReadPrec [ZipList a] Источник

Show a => Show (ZipList a) Источник

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

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

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

Методы

showsPrec :: Int -> ZipList a -> ShowS Источник

show :: ZipList a -> String Источник

showList :: [ZipList a] -> ShowS Источник

type Rep1 ZipList Источник

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

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

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

type Rep1 ZipList = D1 ('MetaData "ZipList" "GHC.Internal.Functor.ZipList" "ghc-internal" 'True) (C1 ('MetaCons "ZipList" 'PrefixI 'True) (S1 ('MetaSel ('Just "getZipList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 [])))
type Rep (ZipList a) Источник

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

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

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

type Rep (ZipList a) = D1 ('MetaData "ZipList" "GHC.Internal.Functor.ZipList" "ghc-internal" 'True) (C1 ('MetaCons "ZipList" 'PrefixI 'True) (S1 ('MetaSel ('Just "getZipList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))
type Item (ZipList a) Источник
Сведения об экземпляре

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

type Item (ZipList a) = a

Вспомогательные функции

(<$>) :: 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 => a -> f b -> f a infixl 4 Источник

Заменяет все позиции во входных данных одним и тем же значением. Определение по умолчанию — 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.14.1/docs/libraries/base-4.22.0.0-66f8/Control-Applicative.html

Spec-Zone.ru

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