Data.Monoid
| Авторские права | (с) Andy Gill 2001 (с) Oregon Graduate Institute of Science and Technology 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | экспериментальная |
| Переносимость | переносимая |
| Safe Haskell | Надежная |
| Язык | Haskell2010 |
Описание
Тип a является Monoid, если он предоставляет ассоциативную функцию (<>), которая позволяет объединить любые два значения типа a в одно, и нейтральный элемент (mempty), такой что
a <> mempty == mempty <> a == a
Monoid является Semigroup с дополнительным требованием нейтрального элемента. Таким образом, любой Monoid является Semigroup, но не наоборот.
Примеры
Моноид Sum определяется операцией числового сложения и `0` как нейтральным элементом:
>>> mempty :: Sum Int
Sum 0
>>> Sum 1 <> Sum 2 <> Sum 3 <> Sum 4 :: Sum Int
Sum {getSum = 10}
Мы можем объединить несколько значений в списке в одно значение, используя функцию mconcat. Обратите внимание, что нам нужно указать тип здесь, поскольку Int является моноидом по нескольким различным операциям:
>>> mconcat [1,2,3,4] :: Sum Int
Sum {getSum = 10}
>>> mconcat [] :: Sum Int
Sum {getSum = 0}
Другой допустимый пример моноида для Int — Product. Он определяется умножением и `1` как нейтральным элементом:
>>> Product 1 <> Product 2 <> Product 3 <> Product 4 :: Product Int
Product {getProduct = 24}
>>> mconcat [1,2,3,4] :: Product Int
Product {getProduct = 24}
>>> mconcat [] :: Product Int
Product {getProduct = 1}
Класс типов Monoid
class Semigroup a => Monoid a where Источник
Класс моноидов (типов с ассоциативной бинарной операцией, имеющей тождество). Экземпляры должны удовлетворять следующим условиям:
- Тождество справа
x <> mempty = x- Тождество слева
mempty <> x = x- Ассоциативность
-
x <> (y <> z) = (x <> y) <> z(Semigroupзакон) - Конкатенация
mconcat = foldr (<>) mempty
Имена методов относятся к моноиду списков при конкатенации, но существует множество других экземпляров.
Некоторые типы могут рассматриваться как моноиды более чем одним способом, например, сложение и умножение на числах. В таких случаях мы часто определяем newtype и делаем их экземплярами Monoid, например Sum и Product.
ПРИМЕЧАНИЕ: Semigroup является суперклассом Monoid начиная с base-4.11.0.0.
Минимальное полное определение
Методы
Тождество mappend
>>> "Hello world" <> mempty "Hello world"
mappend :: a -> a -> a Источник
Ассоциативная операция
ПРИМЕЧАНИЕ: Этот метод избыточен и имеет реализацию по умолчанию mappend = (<>) начиная с base-4.11.0.0. Если он реализован вручную, так как mappend является синонимом для (<>), ожидается, что эти две функции определены одинаково. В будущих версиях GHC mappend будет удален из Monoid.
Свертка списка с использованием моноида.
Для большинства типов будет использоваться определение по умолчанию для mconcat, но функция включена в определение класса, чтобы можно было предоставить оптимизированную версию для конкретных типов.
>>> mconcat ["Hello", " ", "Haskell", "!"] "Hello Haskell!"
Экземпляры
| Monoid Ordering | С версии: base-2.1 |
Определено в GHC.Base Методыmempty :: Ordering Исходный код mappend :: Ordering -> Ordering -> Ordering Исходный код mconcat :: [Ordering] -> Ordering Исходный код | |
| Monoid () | С версии: base-2.1 |
Определено в GHC.Base Методыmempty :: () Исходный код mappend :: () -> () -> () Исходный код mconcat :: [()] -> () Исходный код | |
| Monoid Any | С версии: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Monoid All | С версии: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Monoid Lifetime |
С версии: base-4.8.0.0 |
Определено в GHC.Event.Internal Методыmempty :: Lifetime Исходный код mappend :: Lifetime -> Lifetime -> Lifetime Исходный код mconcat :: [Lifetime] -> Lifetime Исходный код | |
| Monoid Event | С версии: base-4.4.0.0 |
Определено в GHC.Event.Internal | |
| Monoid [a] | С версии: base-2.1 |
Определено в GHC.Base Методыmempty :: [a] Исходный код mappend :: [a] -> [a] -> [a] Исходный код mconcat :: [[a]] -> [a] Исходный код | |
| Semigroup a => Monoid (Maybe a) |
Поднимает полугруппу в С версии 4.11.0: ограничение на внутреннее С версии: base-2.1 |
Определено в GHC.Base Методыmempty :: Maybe a Исходный код mappend :: Maybe a -> Maybe a -> Maybe a Исходный код mconcat :: [Maybe a] -> Maybe a Исходный код | |
| Monoid a => Monoid (IO a) | Since: base-4.9.0.0 |
| Monoid p => Monoid (Par1 p) | Since: base-4.12.0.0 |
| Monoid a => Monoid (Down a) | Since: base-4.11.0.0 |
| Num a => Monoid (Product a) | Since: base-2.1 |
| Num a => Monoid (Sum a) | Since: base-2.1 |
| Monoid (Endo a) | Since: base-2.1 |
| Monoid a => Monoid (Dual a) | Since: base-2.1 |
| Monoid (Last a) | Since: base-2.1 |
Определено в Data.Functor.Contravariant Методыmempty :: Equivalence a Источник mappend :: Equivalence a -> Equivalence a -> Equivalence a Источник mconcat :: [Equivalence a] -> Equivalence a Источник | |
| Monoid (Comparison a) | |
Определено в Data.Functor.Contravariant Методыmempty :: Comparison a Источник mappend :: Comparison a -> Comparison a -> Comparison a Источник mconcat :: [Comparison a] -> Comparison a Источник | |
| Monoid (Predicate a) | |
| Monoid b => Monoid (a -> b) | С момента: base-2.1 |
| Monoid (U1 p) | С момента: base-4.12.0.0 |
| (Monoid a, Monoid b) => Monoid (a, b) | С момента: base-2.1 |
| Monoid a => Monoid (ST s a) | С момента: base-4.11.0.0 |
| Monoid (Proxy s) | С момента: base-4.7.0.0 |
Определено в Data.Proxy Методыmempty :: Proxy s Исходный код mappend :: Proxy s -> Proxy s -> Proxy s Исходный код mconcat :: [Proxy s] -> Proxy s Исходный код | |
| Monoid a => Monoid (Op a b) | |
Определено в Data.Functor.Contravariant Методыmempty :: Op a b Исходный код mappend :: Op a b -> Op a b -> Op a b Исходный код mconcat :: [Op a b] -> Op a b Исходный код | |
| Monoid (f p) => Monoid (Rec1 f p) | С момента: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: Rec1 f p Исходный код mappend :: Rec1 f p -> Rec1 f p -> Rec1 f p Исходный код mconcat :: [Rec1 f p] -> Rec1 f p Исходный код | |
| (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c) | С момента: base-2.1 |
Определено в GHC.Base Методыmempty :: (a, b, c) Исходный код mappend :: (a, b, c) -> (a, b, c) -> (a, b, c) Исходный код mconcat :: [(a, b, c)] -> (a, b, c) Исходный код | |
| Alternative f => Monoid (Alt f a) | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыmempty :: Alt f a Исходный код mappend :: Alt f a -> Alt f a -> Alt f a Исходный код mconcat :: [Alt f a] -> Alt f a Исходный код | |
| (Applicative f, Monoid a) => Monoid (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методыmempty :: Ap f a Исходный код mappend :: Ap f a -> Ap f a -> Ap f a Исходный код mconcat :: [Ap f a] -> Ap f a Исходный код | |
| Monoid a => Monoid (Const a b) | С момента: base-4.9.0.0 |
Определено в Data.Functor.Const Методыmempty :: Const a b Исходный код mappend :: Const a b -> Const a b -> Const a b Исходный код mconcat :: [Const a b] -> Const a b Исходный код | |
| Monoid c => Monoid (K1 i c p) | С момента: base-4.12.0.0 |
| (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) | Since: base-4.12.0.0 |
| (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d) | Since: base-2.1 |
| Monoid (f p) => Monoid (M1 i c f p) | Since: base-4.12.0.0 |
| Monoid (f (g p)) => Monoid ((f :.: g) p) | Since: base-4.12.0.0 |
| (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) | Since: base-2.1 |
(<>) :: Semigroup a => a -> a -> a infixr 6 Source
Ассоциативная операция.
>>> [1,2,3] <> [4,5,6] [1,2,3,4,5,6]
Дуал Monoid, полученный путем перестановки аргументов mappend.
>>> getDual (mappend (Dual "Hello") (Dual "World")) "WorldHello"
Экземпляры
| Monad Dual | Since: base-4.8.0.0 |
| Functor Dual | Since: base-4.8.0.0 |
| MonadFix Dual | Since: base-4.8.0.0 |
Определено в Control.Monad.Fix | |
| Applicative Dual | Since: base-4.8.0.0 |
| Foldable Dual | Since: base-4.8.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Dual m -> m Source foldMap :: Monoid m => (a -> m) -> Dual a -> m Source foldMap' :: Monoid m => (a -> m) -> Dual a -> m Source foldr :: (a -> b -> b) -> b -> Dual a -> b Source foldr' :: (a -> b -> b) -> b -> Dual a -> b Source foldl :: (b -> a -> b) -> b -> Dual a -> b Source foldl' :: (b -> a -> b) -> b -> Dual a -> b Source foldr1 :: (a -> a -> a) -> Dual a -> a Source foldl1 :: (a -> a -> a) -> Dual a -> a Source toList :: Dual a -> [a] Source length :: Dual a -> Int Source elem :: Eq a => a -> Dual a -> Bool Source maximum :: Ord a => Dual a -> a Source minimum :: Ord a => Dual a -> a Source | |
| Traversable Dual | Since: base-4.8.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> Dual a -> f (Dual b) Исходный код sequenceA :: Applicative f => Dual (f a) -> f (Dual a) Исходный код mapM :: Monad m => (a -> m b) -> Dual a -> m (Dual b) Исходный код sequence :: Monad m => Dual (m a) -> m (Dual a) Исходный код | |
| MonadZip Dual | Since: base-4.8.0.0 |
Определено в Control.Monad.Zip Методыmzip :: Dual a -> Dual b -> Dual (a, b) Исходный код mzipWith :: (a -> b -> c) -> Dual a -> Dual b -> Dual c Исходный код munzip :: Dual (a, b) -> (Dual a, Dual b) Исходный код | |
| Bounded a => Bounded (Dual a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Eq a => Eq (Dual a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Data a => Data (Dual a) | Since: base-4.8.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dual a -> c (Dual a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Dual a) Исходный код toConstr :: Dual a -> Constr Исходный код dataTypeOf :: Dual a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Dual a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Dual a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Dual a -> Dual a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Dual a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Dual a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Исходный код | |
| Ord a => Ord (Dual a) | С момента: base-2.1 |
Определено в Data.Semigroup.Internal Методыcompare :: Dual a -> Dual a -> Ordering Исходный код (<) :: Dual a -> Dual a -> Bool Исходный код (<=) :: Dual a -> Dual a -> Bool Исходный код (>) :: Dual a -> Dual a -> Bool Исходный код (>=) :: Dual a -> Dual a -> Bool Исходный код max :: Dual a -> Dual a -> Dual a Исходный код min :: Dual a -> Dual a -> Dual a Исходный код | |
| Read a => Read (Dual a) | С момента: base-2.1 |
Определено в Data.Semigroup.Internal МетодыreadsPrec :: Int -> ReadS (Dual a) Исходный код readList :: ReadS [Dual a] Исходный код readPrec :: ReadPrec (Dual a) Исходный код readListPrec :: ReadPrec [Dual a] Исходный код | |
| Show a => Show (Dual a) | С момента: base-2.1 |
Моноид эндоморфизмов при композиции.
>>> let computation = Endo ("Hello, " ++) <> Endo (++ "!")
>>> appEndo computation "Haskell"
"Hello, Haskell!"
Примеры
| Generic (Endo a) | С момента: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep (Endo a) :: Тип -> Тип Исходный код | |
| Полугруппа (Endo a) | С момента: base-4.9.0.0 |
Определено в Data.Semigroup.Internal Методы(<>) :: Endo a -> Endo a -> Endo a Исходный код sconcat :: Непустой список (Endo a) -> Endo a Исходный код stimes :: Целочисленный b => b -> Endo a -> Endo a Исходный код | |
| Моноид (Endo a) | С момента: base-2.1 |
Определено в Data.Semigroup.Internal Методыmempty :: Endo a Исходный код mappend :: Endo a -> Endo a -> Endo a Исходный код mconcat :: [Endo a] -> Endo a Исходный код | |
| type Rep (Endo a) | |
Определено в Data.Semigroup.Internal | |
Оборачивания Bool
newtype All Исходный код
Булевой моноид по конъюнкции (&&).
>>> getAll (All True <> mempty <> All False) False
>>> getAll (mconcat (map (\x -> All (even x)) [2,4,6,7,8])) False
Примеры
| Bounded All | С версии: base-2.1 |
| Eq All | С версии: base-2.1 |
| Data All | С версии: base-4.8.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> All -> c All Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c All Source toConstr :: All -> Constr Source dataTypeOf :: All -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c All) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c All) Source gmapT :: (forall b. Data b => b -> b) -> All -> All Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Source gmapQ :: (forall d. Data d => d -> u) -> All -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> All -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> All -> m All Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Source | |
| Ord All | С версии: base-2.1 |
Булевый моноид при дизъюнкции (||).
>>> getAny (Any True <> mempty <> Any False) True
>>> getAny (mconcat (map (\x -> Any (even x)) [2,4,6,7,8])) True
Экземпляры
| Bounded Any | Since: base-2.1 |
| Eq Any | Since: base-2.1 |
| Data Any | Since: base-4.8.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Any -> c Any Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Any Source toConstr :: Any -> Constr Source dataTypeOf :: Any -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Any) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Any) Source gmapT :: (forall b. Data b => b -> b) -> Any -> Any Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Source gmapQ :: (forall d. Data d => d -> u) -> Any -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Any -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Any -> m Any Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Source | |
| Ord Any | Since: base-2.1 |
Обёртки Num
Моноид по сложению.
>>> getSum (Sum 1 <> Sum 2 <> mempty) 3
Экземпляры
| Monad Sum | Since: base-4.8.0.0 |
| Functor Sum | Since: base-4.8.0.0 |
| MonadFix Sum | Since: base-4.8.0.0 |
Определено в Control.Monad.Fix | |
| Applicative Sum | Since: base-4.8.0.0 |
| Foldable Sum | Since: base-4.8.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Sum m -> m Source foldMap :: Monoid m => (a -> m) -> Sum a -> m Source foldMap' :: Monoid m => (a -> m) -> Sum a -> m Source foldr :: (a -> b -> b) -> b -> Sum a -> b Source foldr' :: (a -> b -> b) -> b -> Sum a -> b Source foldl :: (b -> a -> b) -> b -> Sum a -> b Source foldl' :: (b -> a -> b) -> b -> Sum a -> b Source foldr1 :: (a -> a -> a) -> Sum a -> a Source foldl1 :: (a -> a -> a) -> Sum a -> a Source elem :: Eq a => a -> Sum a -> Bool Source maximum :: Ord a => Sum a -> a Source minimum :: Ord a => Sum a -> a Source | |
| Traversable Sum | Since: base-4.8.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) Исходный код sequenceA :: Applicative f => Sum (f a) -> f (Sum a) Исходный код mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) Исходный код sequence :: Monad m => Sum (m a) -> m (Sum a) Исходный код | |
| MonadZip Sum | Since: base-4.8.0.0 |
Определено в Control.Monad.Zip Методыmzip :: Sum a -> Sum b -> Sum (a, b) Исходный код mzipWith :: (a -> b -> c) -> Sum a -> Sum b -> Sum c Исходный код munzip :: Sum (a, b) -> (Sum a, Sum b) Исходный код | |
| Bounded a => Bounded (Sum a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Eq a => Eq (Sum a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Data a => Data (Sum a) | Since: base-4.8.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sum a -> c (Sum a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Sum a) Исходный код toConstr :: Sum a -> Constr Исходный код dataTypeOf :: Sum a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Sum a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Sum a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Sum a -> Sum a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Sum a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Sum a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Исходный код | |
| Num a => Num (Sum a) | С момента: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Методы(+) :: Sum a -> Sum a -> Sum a Исходный код (-) :: Sum a -> Sum a -> Sum a Исходный код (*) :: Sum a -> Sum a -> Sum a Исходный код negate :: Sum a -> Sum a Исходный код abs :: Sum a -> Sum a Исходный код signum :: Sum a -> Sum a Исходный код fromInteger :: Integer -> Sum a Исходный код | |
| Ord a => Ord (Sum a) | С момента: base-2.1 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep1 Sum :: k -> Type Исходный код Методыfrom1 :: forall (a :: k). Sum a -> Rep1 Sum a Исходный код to1 :: forall (a :: k). Rep1 Sum a -> Sum a Исходный код | |
| type Rep (Sum a) | |
Определено в Data.Semigroup.Internal | |
| type Rep1 Sum | |
Определено в Data.Semigroup.Internal | |
newtype Product a Исходный код
Множество по умножению.
>>> getProduct (Product 3 <> Product 4 <> mempty) 12
Конструкторы
| Product | |
Поля
| |
Примеры
| Монад Продукт | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методы(>>=) :: Продукт a -> (a -> Продукт b) -> Продукт b Исходный код (>>) :: Продукт a -> Продукт b -> Продукт b Исходный код return :: a -> Продукт a Исходный код | |
| Функтор Продукт | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыfmap :: (a -> b) -> Продукт a -> Продукт b Исходный код (<$) :: a -> Продукт b -> Продукт a Исходный код | |
| MonadFix Продукт | С момента: base-4.8.0.0 |
Определено в Control.Monad.Fix Методыmfix :: (a -> Продукт a) -> Продукт a Исходный код | |
| Применимый Продукт | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыpure :: a -> Продукт a Исходный код (<*>) :: Продукт (a -> b) -> Продукт a -> Продукт b Исходный код liftA2 :: (a -> b -> c) -> Продукт a -> Продукт b -> Продукт c Исходный код (*>) :: Продукт a -> Продукт b -> Продукт b Исходный код (<*) :: Продукт a -> Продукт b -> Продукт a Исходный код | |
| Сворачиваемый Продукт | С момента: base-4.8.0.0 |
| Data a => Data (Product a) | Since: base-4.8.0.0 |
Defined in Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Product a -> c (Product a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Product a) Source toConstr :: Product a -> Constr Source dataTypeOf :: Product a -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Product a)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Product a)) Source gmapT :: (forall b. Data b => b -> b) -> Product a -> Product a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Source gmapQ :: (forall d. Data d => d -> u) -> Product a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Product a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source | |
| Num a => Num (Product a) | Since: base-4.7.0.0 |
Defined in Data.Semigroup.Internal Методы(+) :: Product a -> Product a -> Product a Source (-) :: Product a -> Product a -> Product a Source (*) :: Product a -> Product a -> Product a Source negate :: Product a -> Product a Source abs :: Product a -> Product a Source signum :: Product a -> Product a Source fromInteger :: Integer -> Product a Source | |
| Ord a => Ord (Product a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal Методыcompare :: Product a -> Product a -> Ordering Источник (<) :: Product a -> Product a -> Bool Источник (<=) :: Product a -> Product a -> Bool Источник (>) :: Product a -> Product a -> Bool Источник (>=) :: Product a -> Product a -> Bool Источник | |
| Read a => Read (Product a) | С момента: base-2.1 |
| Show a => Show (Product a) | С момента: base-2.1 |
| Generic (Product a) | С момента: base-4.7.0.0 |
| Num a => Semigroup (Product a) | С момента: base-4.9.0.0 |
| Num a => Monoid (Product a) | С момента: base-2.1 |
| Generic1 Product | С версии: base-4.7.0.0 |
| type Rep (Product a) | |
Определено в Data.Semigroup.Internal | |
| type Rep1 Product | |
Определено в Data.Semigroup.Internal | |
Обёртки Maybe
Для реализации find или findLast для любого Foldable:
findLast :: Foldable t => (a -> Bool) -> t a -> Maybe a
findLast pred = getLast . foldMap (x -> if pred x
then Last (Just x)
else Last Nothing)
Большая часть интерфейса Map может быть реализована с помощью alter. Остальное можно реализовать с помощью новой функции alterF и либо First, либо Last:
alterF :: (Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
instance Monoid a => Functor ((,) a) -- from Data.Functor
insertLookupWithKey :: Ord k => (k -> v -> v -> v) -> k -> v
-> Map k v -> (Maybe v, Map k v)
insertLookupWithKey combine key value =
Arrow.first getFirst . alterF doChange key
where
doChange Nothing = (First Nothing, Just value)
doChange (Just oldValue) =
(First (Just oldValue),
Just (combine key value oldValue))
Монада Maybe, возвращающая самое левое ненулевое значение.
First a изоморфна Alt Maybe a, но исторически предшествует ей.
>>> getFirst (First (Just "hello") <> First Nothing <> First (Just "world")) Just "hello"
Использование этого типа не рекомендуется. Обратите внимание на следующее равенство:
Data.Monoid.First x === Maybe (Data.Semigroup.First x)
Помимо структурного эквивалента, у них также есть экземпляры Monoid, которые ведут себя одинаково. Этот тип будет помечен как устаревший в GHC 8.8 и удален в GHC 8.10. Пользователям рекомендуется использовать вариант из Data.Semigroup и обернуть его в Maybe.
Примеры
| Monad First | С момента: base-4.8.0.0 |
Определено в Data.Monoid Методы(>>=) :: First a -> (a -> First b) -> First b Исходный код (>>) :: First a -> First b -> First b Исходный код return :: a -> First a Исходный код | |
| Functor First | С момента: base-4.8.0.0 |
Определено в Data.Monoid Методыfmap :: (a -> b) -> First a -> First b Исходный код (<$) :: a -> First b -> First a Исходный код | |
| MonadFix First | С момента: base-4.8.0.0 |
Определено в Control.Monad.Fix Методыmfix :: (a -> First a) -> First a Исходный код | |
| Applicative First | С момента: base-4.8.0.0 |
Определено в 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 Исходный код | |
| Foldable First | С момента: base-4.8.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => First m -> m Исходный код foldMap :: Monoid m => (a -> m) -> First a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> First a -> m Исходный код foldr :: (a -> b -> b) -> b -> First a -> b Исходный код foldr' :: (a -> b -> b) -> b -> First a -> b Исходный код foldl :: (b -> a -> b) -> b -> First a -> b Исходный код foldl' :: (b -> a -> b) -> b -> First a -> b Исходный код foldr1 :: (a -> a -> a) -> First a -> a Исходный код foldl1 :: (a -> a -> a) -> First a -> a Исходный код toList :: First a -> [a] Исходный код null :: First a -> Bool Исходный код length :: First a -> Int Исходный код elem :: Eq a => a -> First a -> Bool Исходный код maximum :: Ord a => First a -> a Исходный код minimum :: Ord a => First a -> a Исходный код sum :: Num a => First a -> a Исходный код product :: Num a => First a -> a Исходный код | |
| Traversable First | С: base-4.8.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> First a -> f (First b) Исходный код sequenceA :: Applicative f => First (f a) -> f (First a) Исходный код mapM :: Monad m => (a -> m b) -> First a -> m (First b) Исходный код sequence :: Monad m => First (m a) -> m (First a) Исходный код | |
| MonadZip First | С: base-4.8.0.0 |
Определено в Control.Monad.Zip Методыmzip :: First a -> First b -> First (a, b) Исходный код mzipWith :: (a -> b -> c) -> First a -> First b -> First c Исходный код munzip :: First (a, b) -> (First a, First b) Исходный код | |
| Eq a => Eq (First a) | С: base-2.1 |
Определено в Data.Monoid Методы(==) :: First a -> First a -> Bool Исходный код (/=) :: First a -> First a -> Bool Исходный код | |
| Data a => Data (First a) | С: base-4.8.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) Source toConstr :: First a -> Constr Source dataTypeOf :: First a -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) Source gmapT :: (forall b. Data b => b -> b) -> First a -> First a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Source gmapQ :: (forall d. Data d => d -> u) -> First a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> First a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source | |
| Ord a => Ord (First a) | С версии: base-2.1 |
Определено в Data.Monoid | |
| Read a => Read (First a) | С версии: base-2.1 |
| Show a => Show (First a) | С момента: base-2.1 |
Определено в Data.Monoid МетодыshowsPrec :: Int -> First a -> ShowS Исходный код show :: First a -> String Исходный код showList :: [First a] -> ShowS Исходный код | |
| Generic (First a) | С момента: base-4.7.0.0 |
Определено в Data.Monoid Связанные типыtype Rep (First a) :: Тип -> Тип Исходный код Методыfrom :: First a -> Rep (First a) x Исходный код to :: Rep (First a) x -> First a Исходный код | |
| Semigroup (First a) | С момента: base-4.9.0.0 |
Определено в Data.Monoid Методы(<>) :: First a -> First a -> First a Исходный код sconcat :: NonEmpty (First a) -> First a Исходный код stimes :: Integral b => b -> First a -> First a Исходный код | |
| Monoid (First a) | С момента: base-2.1 |
Определено в Data.Monoid Методыmempty :: First a Исходный код mappend :: First a -> First a -> First a Исходный код mconcat :: [First a] -> First a Исходный код | |
| Generic1 First | С момента: base-4.7.0.0 |
Определено в Data.Monoid Связанные типыtype Rep1 First :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k). First a -> Rep1 First a Исходный код to1 :: forall (a :: k). Rep1 First a -> First a Исходный код | |
| type Rep (First a) | |
Определено в Data.Monoid | |
| type Rep1 First | |
Определено в Data.Monoid | |
newtype Last a Исходный код
Возможность моноида, возвращающая правое крайнее значение, отличное от Nothing.
Last a изоморфно Dual (First a), а значит и Dual (Alt Maybe a)
>>> getLast (Last (Just "hello") <> Last Nothing <> Last (Just "world")) Just "world"
Использование этого типа не рекомендуется. Обратите внимание на следующее соответствие:
Data.Monoid.Last x === Maybe (Data.Semigroup.Last x)
Помимо структурного соответствия, эти два типа также имеют Monoid реализации, которые ведут себя одинаково. Этот тип будет помечен как устаревший в GHC 8.8 и удален в GHC 8.10. Пользователям рекомендуется использовать вариант из Data.Semigroup и обернуть его в Maybe.
Реализации
| Monad Last | Since: base-4.8.0.0 |
| Functor Last | Since: base-4.8.0.0 |
| MonadFix Last | Since: base-4.8.0.0 |
Определено в Control.Monad.Fix | |
| Applicative Last | Since: base-4.8.0.0 |
| Foldable Last | Since: base-4.8.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Last m -> m Source foldMap :: Monoid m => (a -> m) -> Last a -> m Source foldMap' :: Monoid m => (a -> m) -> Last a -> m Source foldr :: (a -> b -> b) -> b -> Last a -> b Source foldr' :: (a -> b -> b) -> b -> Last a -> b Source foldl :: (b -> a -> b) -> b -> Last a -> b Source foldl' :: (b -> a -> b) -> b -> Last a -> b Source foldr1 :: (a -> a -> a) -> Last a -> a Source foldl1 :: (a -> a -> a) -> Last a -> a Source toList :: Last a -> [a] Source length :: Last a -> Int Source elem :: Eq a => a -> Last a -> Bool Source maximum :: Ord a => Last a -> a Source minimum :: Ord a => Last a -> a Source | |
| Traversable Last | Since: base-4.8.0.0 |
| MonadZip Last | Since: base-4.8.0.0 |
| Eq a => Eq (Last a) | Since: base-2.1 |
| Data a => Data (Last a) | Since: base-4.8.0.0 |
Defined in Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) Source toConstr :: Last a -> Constr Source dataTypeOf :: Last a -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) Source gmapT :: (forall b. Data b => b -> b) -> Last a -> Last a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Source gmapQ :: (forall d. Data d => d -> u) -> Last a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Last a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source | |
| Ord a => Ord (Last a) | Since: base-2.1 |
| Read a => Read (Last a) | Since: base-2.1 |
| Show a => Show (Last a) | Since: base-2.1 |
| Generic (Last a) | Since: base-4.7.0.0 |
| Semigroup (Last a) | Since: base-4.9.0.0 |
| Monoid (Last a) | Since: base-2.1 |
| Generic1 Last | Since: base-4.7.0.0 |
Определено в Data.Monoid Связанные типыtype Rep1 Last :: k -> Type Исходный код Методыfrom1 :: forall (a :: k). Last a -> Rep1 Last a Исходный код to1 :: forall (a :: k). Rep1 Last a -> Last a Исходный код | |
| type Rep (Last a) | |
Определено в Data.Monoid | |
| type Rep1 Last | |
Определено в Data.Monoid | |
Альтернативный обертка
newtype Alt f a Исходный код
Моноид в соответствии с <|>.
>>> getAlt (Alt (Just 12) <> Alt (Just 24)) Just 12
>>> getAlt $ Alt Nothing <> Alt (Just 24) Just 24
Since: base-4.8.0.0
Примеры
| Generic1 (Alt f :: k -> Тип) | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Связанные типыtype Rep1 (Alt f) :: k -> Тип Исходный код Методыfrom1 :: forall (a :: k0). Alt f a -> Rep1 (Alt f) a Исходный код to1 :: forall (a :: k0). Rep1 (Alt f) a -> Alt f a Исходный код | |
| Монад f => Монад (Alt f) | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методы(>>=) :: Alt f a -> (a -> Alt f b) -> Alt f b Исходный код (>>) :: Alt f a -> Alt f b -> Alt f b Исходный код return :: a -> Alt f a Исходный код | |
| Функтор f => Функтор (Alt f) | С момента: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыfmap :: (a -> b) -> Alt f a -> Alt f b Исходный код (<$) :: a -> Alt f b -> Alt f a Исходный код | |
| MonadFix f => MonadFix (Alt f) | С момента: base-4.8.0.0 |
Определено в Control.Monad.Fix Методыmfix :: (a -> Alt f a) -> Alt f a Исходный код | |
| Прикладной f => Прикладной (Alt f) | С момента: base-4.8.0.0 |
Определено в 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 Исходный код | |
| Foldable f => Foldable (Alt f) | С момента: base-4.12.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Alt f m -> m Источник foldMap :: Monoid m => (a -> m) -> Alt f a -> m Источник foldMap' :: Monoid m => (a -> m) -> Alt f a -> m Источник foldr :: (a -> b -> b) -> b -> Alt f a -> b Источник foldr' :: (a -> b -> b) -> b -> Alt f a -> b Источник foldl :: (b -> a -> b) -> b -> Alt f a -> b Источник foldl' :: (b -> a -> b) -> b -> Alt f a -> b Источник foldr1 :: (a -> a -> a) -> Alt f a -> a Источник foldl1 :: (a -> a -> a) -> Alt f a -> a Источник toList :: Alt f a -> [a] Источник null :: Alt f a -> Bool Источник length :: Alt f a -> Int Источник elem :: Eq a => a -> Alt f a -> Bool Источник maximum :: Ord a => Alt f a -> a Источник minimum :: Ord a => Alt f a -> a Источник | |
| Traversable f => Traversable (Alt f) | С момента: base-4.12.0.0 |
Определено в Data.Traversable | |
| MonadPlus f => MonadPlus (Alt f) | С момента: base-4.8.0.0 |
| Alternative f => Alternative (Alt f) | С момента: base-4.8.0.0 |
| MonadZip f => MonadZip (Alt f) | С момента: base-4.8.0.0 |
Определено в Control.Monad.Zip Методыmzip :: Alt f a -> Alt f b -> Alt f (a, b) Исходный код mzipWith :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Исходный код munzip :: Alt f (a, b) -> (Alt f a, Alt f b) Исходный код | |
| Contravariant f => Contravariant (Alt f) | |
Определено в Data.Functor.Contravariant Методыcontramap :: (a -> b) -> Alt f b -> Alt f a Исходный код (>$) :: b -> Alt f b -> Alt f a Исходный код | |
| Enum (f a) => Enum (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыsucc :: Alt f a -> Alt f a Исходный код pred :: Alt f a -> Alt f a Исходный код toEnum :: Int -> Alt f a Исходный код fromEnum :: Alt f a -> Int Исходный код enumFrom :: Alt f a -> [Alt f a] Исходный код enumFromThen :: Alt f a -> Alt f a -> [Alt f a] Исходный код enumFromTo :: Alt f a -> Alt f a -> [Alt f a] Исходный код enumFromThenTo :: Alt f a -> Alt f a -> Alt f a -> [Alt f a] Исходный код | |
| Eq (f a) => Eq (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методы(==) :: Alt f a -> Alt f a -> Bool Исходный код (/=) :: Alt f a -> Alt f a -> Bool Исходный код | |
| (Data (f a), Data a, Typeable f) => Data (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Alt f a -> c (Alt f a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Alt f a) Исходный код toConstr :: Alt f a -> Constr Исходный код dataTypeOf :: Alt f a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Alt f a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Alt f a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Alt f a -> Alt f a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Alt f a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Alt f a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Исходный код | |
| Num (f a) => Num (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методы(+) :: Alt f a -> Alt f a -> Alt f a Исходный код (-) :: Alt f a -> Alt f a -> Alt f a Исходный код (*) :: Alt f a -> Alt f a -> Alt f a Исходный код negate :: Alt f a -> Alt f a Исходный код abs :: Alt f a -> Alt f a Исходный код signum :: Alt f a -> Alt f a Исходный код fromInteger :: Integer -> Alt f a Исходный код | |
| Ord (f a) => Ord (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal | |
| Read (f a) => Read (Alt f a) | С момента: base-4.8.0.0 |
| Show (f a) => Show (Alt f a) | С момента: base-4.8.0.0 |
| Generic (Alt f a) | С момента: base-4.8.0.0 |
| Alternative f => Semigroup (Alt f a) | С момента: base-4.9.0.0 |
| Alternative f => Monoid (Alt f a) | С момента: base-4.8.0.0 |
| type Rep1 (Alt f :: k -> Type) | |
Определено в Data.Semigroup.Internal | |
| type Rep (Alt f a) | |
Определено в Data.Semigroup.Internal | |
Обертка Applicative
Этот тип данных свидетельствует о подъёме Monoid в точку Applicative поэлементно.
С: base-4.12.0.0
Экземпляры
| Generic1 (Ap f :: k -> Type) | С версии: base-4.12.0.0 |
| Monad f => Monad (Ap f) | С версии: base-4.12.0.0 |
| Functor f => Functor (Ap f) | С версии: base-4.12.0.0 |
| MonadFix f => MonadFix (Ap f) | С версии: base-4.12.0.0 |
Определено в Control.Monad.Fix | |
| MonadFail f => MonadFail (Ap f) | С версии: base-4.12.0.0 |
Определено в Data.Monoid | |
| Applicative f => Applicative (Ap f) | С версии: base-4.12.0.0 |
| Foldable f => Foldable (Ap f) | С версии: base-4.12.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Ap f m -> m Источник foldMap :: Monoid m => (a -> m) -> Ap f a -> m Источник foldMap' :: Monoid m => (a -> m) -> Ap f a -> m Источник foldr :: (a -> b -> b) -> b -> Ap f a -> b Источник foldr' :: (a -> b -> b) -> b -> Ap f a -> b Источник foldl :: (b -> a -> b) -> b -> Ap f a -> b Источник foldl' :: (b -> a -> b) -> b -> Ap f a -> b Источник foldr1 :: (a -> a -> a) -> Ap f a -> a Источник foldl1 :: (a -> a -> a) -> Ap f a -> a Источник toList :: Ap f a -> [a] Источник null :: Ap f a -> Bool Источник length :: Ap f a -> Int Источник elem :: Eq a => a -> Ap f a -> Bool Источник maximum :: Ord a => Ap f a -> a Источник minimum :: Ord a => Ap f a -> a Источник | |
| Traversable f => Traversable (Ap f) | С момента: base-4.12.0.0 |
| MonadPlus f => MonadPlus (Ap f) | С момента: base-4.12.0.0 |
| Alternative f => Alternative (Ap f) | С момента: base-4.12.0.0 |
| (Applicative f, Bounded a) => Bounded (Ap f a) | С момента: base-4.12.0.0 |
| Enum (f a) => Enum (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методыsucc :: Ap f a -> Ap f a Источник pred :: Ap f a -> Ap f a Источник toEnum :: Int -> Ap f a Источник fromEnum :: Ap f a -> Int Источник enumFrom :: Ap f a -> [Ap f a] Источник enumFromThen :: Ap f a -> Ap f a -> [Ap f a] Источник enumFromTo :: Ap f a -> Ap f a -> [Ap f a] Источник enumFromThenTo :: Ap f a -> Ap f a -> Ap f a -> [Ap f a] Источник | |
| Eq (f a) => Eq (Ap f a) | С момента: base-4.12.0.0 |
| (Data (f a), Data a, Typeable f) => Data (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Ap f a -> c (Ap f a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Ap f a) Исходный код toConstr :: Ap f a -> Constr Исходный код dataTypeOf :: Ap f a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Ap f a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Ap f a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Ap f a -> Ap f a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ap f a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ap f a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Ap f a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Ap f a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Исходный код | |
| (Applicative f, Num a) => Num (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методы(+) :: Ap f a -> Ap f a -> Ap f a Исходный код (-) :: Ap f a -> Ap f a -> Ap f a Исходный код (*) :: Ap f a -> Ap f a -> Ap f a Исходный код negate :: Ap f a -> Ap f a Исходный код abs :: Ap f a -> Ap f a Исходный код signum :: Ap f a -> Ap f a Исходный код fromInteger :: Integer -> Ap f a Исходный код | |
| Ord (f a) => Ord (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методыcompare :: Ap f a -> Ap f a -> Ordering Исходный код (<) :: Ap f a -> Ap f a -> Bool Исходный код (<=) :: Ap f a -> Ap f a -> Bool Исходный код (>) :: Ap f a -> Ap f a -> Bool Исходный код (>=) :: Ap f a -> Ap f a -> Bool Исходный код max :: Ap f a -> Ap f a -> Ap f a Исходный код min :: Ap f a -> Ap f a -> Ap f a Исходный код | |
| Read (f a) => Read (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid МетодыreadsPrec :: Int -> ReadS (Ap f a) Исходный код readList :: ReadS [Ap f a] Исходный код readPrec :: ReadPrec (Ap f a) Исходный код readListPrec :: ReadPrec [Ap f a] Исходный код | |
| Show (f a) => Show (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid МетодыshowsPrec :: Int -> Ap f a -> ShowS Исходный код show :: Ap f a -> String Исходный код showList :: [Ap f a] -> ShowS Исходный код | |
| Generic (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Связанные типыtype Rep (Ap f a) :: Type -> Type Исходный код | |
| (Applicative f, Semigroup a) => Semigroup (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методы(<>) :: Ap f a -> Ap f a -> Ap f a Исходный код sconcat :: NonEmpty (Ap f a) -> Ap f a Исходный код stimes :: Integral b => b -> Ap f a -> Ap f a Исходный код | |
| (Applicative f, Monoid a) => Monoid (Ap f a) | С момента: base-4.12.0.0 |
Определено в Data.Monoid Методыmempty :: Ap f a Исходный код mappend :: Ap f a -> Ap f a -> Ap f a Исходный код mconcat :: [Ap f a] -> Ap f a Исходный код | |
| type Rep1 (Ap f :: k -> Type) | |
Определено в Data.Monoid | |
| type Rep (Ap f a) | |
Определено в Data.Monoid | |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-Monoid.html