Data.Semigroup
| Авторские права | (C) 2011-2015 Edward Kmett |
|---|---|
| Лицензия | в стиле BSD (см. файл LICENSE) |
| Сопровождающий | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимый |
| Безопасный Haskell | Trustworthy |
| Язык | Haskell2010 |
Описание
Тип a является Semigroup, если он предоставляет ассоциативную функцию (<>), которая позволяет объединить любые два значения типа a в одно. Ассоциативность означает, что всегда должно выполняться следующее:
(a <> b) <> c == a <> (b <> c)
Примеры
Экземпляр Semigroup класса Min для Int всегда выбирает меньшее число:
>>> Min 1 <> Min 2 <> Min 3 <> Min 4 :: Min Int
Min {getMin = 1}
Если нам нужно объединить несколько значений, мы можем использовать для этого функцию sconcat. Однако необходимо убедиться, что у нас есть хотя бы одно значение для обработки, иначе результат будет неопределённым. Именно поэтому sconcat использует Data.List.NonEmpty.NonEmpty — список, который никогда не бывает пустым:
>>> (1 :| []) 1 :| []
- — эквивалентно [1], но гарантированно не пусто.
>>> (1 :| [2, 3, 4]) 1 :| [2,3,4]
- — эквивалентно [1,2,3,4], но гарантированно не пусто.
Имея в распоряжении эту гарантированно непустую структуру данных, мы можем объединять значения с помощью sconcat и выбранного нами Semigroup. Можно попробовать экземпляры Min и Max для Int, которые выбирают соответственно наименьшее и наибольшее число:
>>> sconcat (1 :| [2, 3, 4]) :: Min Int
Min {getMin = 1}
>>> sconcat (1 :| [2, 3, 4]) :: Max Int
Max {getMax = 4}
Конкатенация строк — ещё один пример экземпляра Semigroup:
>>> "foo" <> "bar" "foobar"
Semigroup — это обобщение Monoid. Однако, в отличие от Semigroup, для Monoid требуется наличие нейтрального элемента (mempty) в дополнение к ассоциативному оператору. Требование нейтрального элемента не позволяет многим типам быть полноценными моноидами, например Data.List.NonEmpty.NonEmpty.
Обратите внимание, что использование (<>) в этом модуле конфликтует с оператором с тем же именем, экспортируемым из Data.Monoid. Однако этот пакет повторно экспортирует (большую часть) содержимого Data.Monoid, поэтому, чтобы использовать полугруппы и моноиды в одном пакете, просто
import Data.Semigroup
Начиная с: base-4.9.0.0
class Semigroup a where Источник
Класс полугрупп (типов с ассоциативной бинарной операцией).
Экземпляры должны удовлетворять следующему закону:
Вместо (<>) можно определить sconcat; в этом случае законами будут:
Начиная с: base-4.9.0.0
Методы
(<>) :: a -> a -> a infixr 6 Источник
Ассоциативная операция.
Примеры
>>> [1,2,3] <> [4,5,6] [1,2,3,4,5,6]
>>> Just [1, 2, 3] <> Just [4, 5, 6] Just [1,2,3,4,5,6]
>>> putStr "Hello, " <> putStrLn "World!" Hello, World!
sconcat :: NonEmpty a -> a Источник
Свернуть непустой список с помощью <>
Определения по умолчанию должно быть достаточно, но его можно переопределить для повышения эффективности.
Примеры
Для следующих примеров предположим, что у нас есть:
>>> import Data.List.NonEmpty (NonEmpty (..))
>>> sconcat $ "Hello" :| [" ", "Haskell", "!"] "Hello Haskell!"
>>> sconcat $ Just [1, 2, 3] :| [Nothing, Just [4, 5, 6]] Just [1,2,3,4,5,6]
>>> sconcat $ Left 1 :| [Right 2, Left 3, Right 4] Right 2
stimes :: Integral b => b -> a -> a Источник
Повторить значение n раз.
Определение по умолчанию вызовет исключение, если множитель <= 0. Его можно переопределить полной реализацией. Для моноидов предпочтительно использовать stimesMonoid.
Благодаря тому, что этот метод является частью класса, идемпотентные полугруппы и моноиды могут выполнять его за время \(\mathcal{O}(1)\), выбирая соответственно stimes = stimesIdempotent или stimes =
stimesIdempotentMonoid.
Примеры
>>> stimes 4 [1] [1,1,1,1]
>>> stimes 5 (putStr "hi!") hi!hi!hi!hi!hi!
>>> stimes 3 (Right ":)") Right ":)"
Экземпляры
| Ord a => Semigroup (Min a) Источник | Начиная с: base-4.9.0.0 |
| Monoid m => Semigroup (WrappedMonoid m) Источник | Начиная с: base-4.9.0.0 |
Определён в Data.Semigroup Методы(<>) :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Источник sconcat :: NonEmpty (WrappedMonoid m) -> WrappedMonoid m Источник stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Источник | |
| Semigroup (NonEmpty a) Источник | Начиная с: base-4.9.0.0 |
| Semigroup a => Semigroup (STM a) Источник | Начиная с: base-4.17.0.0 |
| Bits a => Semigroup (And a) Источник | Начиная с: base-4.16 |
| FiniteBits a => Semigroup (Iff a) Источник |
Это ограничение, пожалуй, слишком сильное. Однако, поскольку у некоторых типов (например, Начиная с: base-4.16 |
| Bits a => Semigroup (Ior a) Источник | Начиная с: base-4.16 |
| Bits a => Semigroup (Xor a) Источник | Начиная с: base-4.16 |
| Semigroup a => Semigroup (Identity a) Источник | Начиная с: base-4.9.0.0 |
| Ord a => Semigroup (Max a) Источник | Начиная с: base-4.11.0.0 |
| Ord a => Semigroup (Min a) Источник | Начиная с: base-4.11.0.0 |
| Semigroup (First a) Источник | Начиная с: base-4.9.0.0 |
| Semigroup (Last a) Источник | Начиная с: base-4.9.0.0 |
| Semigroup a => Semigroup (Down a) Источник | Начиная с: base-4.11.0.0 |
| Semigroup (U1 p) Источник | С версии: base-4.12.0.0 |
| Semigroup (V1 p) Источник | С версии: base-4.12.0.0 |
| Semigroup a => Semigroup (ST s a) Источник | С версии: base-4.11.0.0 |
| (Semigroup a, Semigroup b) => Semigroup (a, b) Источник | С версии: base-4.9.0.0 |
| Semigroup b => Semigroup (a -> b) Источник | С версии: base-4.9.0.0 |
| Semigroup a => Semigroup (Const a b) Источник | С версии: base-4.9.0.0 |
| (Applicative f, Semigroup a) => Semigroup (Ap f a) Источник | С версии: base-4.12.0.0 |
| Alternative f => Semigroup (Alt f a) Источник | С версии: base-4.9.0.0 |
| Semigroup (f p) => Semigroup (Rec1 f p) Источник | С версии: base-4.12.0.0 |
| (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) Источник | С версии: base-4.9.0.0 |
| (Semigroup (f a), Semigroup (g a)) => Semigroup (Product f g a) Источник | С версии: base-4.16.0.0 |
| (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) Источник | С версии: base-4.12.0.0 |
| Semigroup c => Semigroup (K1 i c p) Источник | С версии: base-4.12.0.0 |
| (Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) Источник | С версии: base-4.9.0.0 |
| Semigroup (f (g a)) => Semigroup (Compose f g a) Источник | С версии: base-4.16.0.0 |
stimesMonoid :: (Integral b, Monoid a) => b -> a -> a Источник
Это корректное определение stimes для Monoid.
В отличие от определения stimes по умолчанию, оно определено для 0, поэтому при возможности ему следует отдавать предпочтение.
stimesIdempotent :: Integral b => b -> a -> a Источник
Это корректное определение stimes для идемпотентного Semigroup.
Когда x <> x = x, следует отдавать предпочтение этому определению, поскольку оно работает за \(\mathcal{O}(1)\), а не за \(\mathcal{O}(\log n)\).
stimesIdempotentMonoid :: (Integral b, Monoid a) => b -> a -> a Источник
Это корректное определение stimes для идемпотентного Monoid.
Когда x <> x = x, следует отдавать предпочтение этому определению, поскольку оно работает за \(\mathcal{O}(1)\), а не за \(\mathcal{O}(\log n)\)
mtimesDefault :: (Integral b, Monoid a) => b -> a -> a Источник
Повторить значение n раз.
mtimesDefault n a = a <> a <> ... <> a -- using <> (n-1) times
Во многих случаях stimes 0 a для Monoid вернёт mempty. Однако бывают ситуации, когда этого сделать не удаётся. В частности, довольно часто встречается следующая ситуация:
data T a = ... class Constraint1 a class Constraint1 a => Constraint2 a
instance Constraint1 a => Semigroup (T a) instance Constraint2 a => Monoid (T a)
Поскольку Constraint1 недостаточно для реализации mempty, stimes для T a не может этого сделать.
При работе с таким типом или полиморфно с экземплярами Semigroup следует использовать mtimesDefault, если множитель может быть равен нулю. При ненулевом множителе оно реализуется с помощью stimes, а при нулевом — с помощью mempty.
Примеры
>>> mtimesDefault 0 "bark" ""
>>> mtimesDefault 3 "meow" "meowmeowmeow"
Полугруппы
Полугруппа Min Monoid и Semigroup всегда выбирают наименьший элемент согласно экземпляру Ord и min содержащегося типа.
Примеры
>>> Min 42 <> Min 3
Min {getMin = 3}
>>> sconcat $ Min 1 :| [ Min n | n <- [2 .. 100]]
Min {getMin = 1}
Экземпляры
| Foldable1 Min Исходный код | Начиная с: base-4.18.0.0 |
||||
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Min m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Min a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Min a -> m Исходный код toNonEmpty :: Min a -> NonEmpty a Исходный код maximum :: Ord a => Min a -> a Исходный код minimum :: Ord a => Min a -> a Исходный код head :: Min a -> a Исходный код last :: Min a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Min a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Min a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Min a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Min a -> b Исходный код | |||||
| 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 Исходный код | |||||
| Functor Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup | |||||
| Monad Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методы(>>=) :: Min a -> (a -> Min b) -> Min b Исходный код (>>) :: Min a -> Min b -> Min b Исходный код return :: a -> Min a Исходный код | |||||
| MonadFix Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыmfix :: (a -> Min a) -> Min a Исходный код | |||||
| Foldable Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыfold :: Monoid m => Min m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Min a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Min a -> m Исходный код foldr :: (a -> b -> b) -> b -> Min a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Min a -> b Исходный код foldl :: (b -> a -> b) -> b -> Min a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Min a -> b Исходный код foldr1 :: (a -> a -> a) -> Min a -> a Исходный код foldl1 :: (a -> a -> a) -> Min a -> a Исходный код toList :: Min a -> [a] Исходный код null :: Min a -> Bool Исходный код length :: Min a -> Int Исходный код elem :: Eq a => a -> Min a -> Bool Исходный код maximum :: Ord a => Min a -> a Исходный код minimum :: Ord a => Min a -> a Исходный код sum :: Num a => Min a -> a Исходный код product :: Num a => Min a -> a Исходный код | |||||
| Traversable Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыtraverse :: Applicative f => (a -> f b) -> Min a -> f (Min b) Исходный код sequenceA :: Applicative f => Min (f a) -> f (Min a) Исходный код mapM :: Monad m => (a -> m b) -> Min a -> m (Min b) Исходный код sequence :: Monad m => Min (m a) -> m (Min a) Исходный код | |||||
| Generic1 Min Исходный код | |||||
Определён в Data.Semigroup Связанные типы
| |||||
| (Ord a, Bounded a) => Monoid (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыmempty :: Min a Исходный код mappend :: Min a -> Min a -> Min a Исходный код mconcat :: [Min a] -> Min a Исходный код | |||||
| Ord a => Semigroup (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методы(<>) :: Min a -> Min a -> Min a Исходный код sconcat :: NonEmpty (Min a) -> Min a Исходный код stimes :: Integral b => b -> Min a -> Min a Исходный код | |||||
| Eq a => Eq (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup | |||||
| Ord a => Ord (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыcompare :: Min a -> Min a -> Ordering Исходный код (<) :: Min a -> Min a -> Bool Исходный код (<=) :: Min a -> Min a -> Bool Исходный код (>) :: Min a -> Min a -> Bool Исходный код (>=) :: Min a -> Min a -> Bool Исходный код max :: Min a -> Min a -> Min a Исходный код min :: Min a -> Min a -> Min a Исходный код | |||||
| Data a => Data (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) Исходный код toConstr :: Min a -> Constr Исходный код dataTypeOf :: Min a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Min a -> Min a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Min a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Min a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Исходный код | |||||
| Bounded a => Bounded (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| Enum a => Enum (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыsucc :: Min a -> Min a Исходный код pred :: Min a -> Min a Исходный код toEnum :: Int -> Min a Исходный код fromEnum :: Min a -> Int Исходный код enumFrom :: Min a -> [Min a] Исходный код enumFromThen :: Min a -> Min a -> [Min a] Исходный код enumFromTo :: Min a -> Min a -> [Min a] Исходный код enumFromThenTo :: Min a -> Min a -> Min a -> [Min a] Исходный код | |||||
| Generic (Min a) Исходный код | |||||
Определено в Data.Semigroup Связанные типы
| |||||
| Num a => Num (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методы(+) :: Min a -> Min a -> Min a Исходный код (-) :: Min a -> Min a -> Min a Исходный код (*) :: Min a -> Min a -> Min a Исходный код negate :: Min a -> Min a Исходный код abs :: Min a -> Min a Исходный код signum :: Min a -> Min a Исходный код fromInteger :: Integer -> Min a Исходный код | |||||
| Read a => Read (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыreadsPrec :: Int -> ReadS (Min a) Исходный код readList :: ReadS [Min a] Исходный код readPrec :: ReadPrec (Min a) Исходный код readListPrec :: ReadPrec [Min a] Исходный код | |||||
| Show a => Show (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыshowsPrec :: Int -> Min a -> ShowS Исходный код show :: Min a -> String Исходный код showList :: [Min a] -> ShowS Исходный код | |||||
| type Rep1 Min Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| type Rep (Min a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
newtype Max a Исходный код
Типы Max Monoid и Semigroup всегда выбирают больший элемент согласно экземпляру Ord и max содержащегося типа.
Примеры
>>> Max 42 <> Max 3
Max {getMax = 42}
>>> sconcat $ Max 1 :| [ Max n | n <- [2 .. 100]]
Max {getMax = 100}
Экземпляры
| Foldable1 Max Источник | Начиная с: base-4.18.0.0 |
||||
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Max m -> m Источник foldMap1 :: Semigroup m => (a -> m) -> Max a -> m Источник foldMap1' :: Semigroup m => (a -> m) -> Max a -> m Источник toNonEmpty :: Max a -> NonEmpty a Источник maximum :: Ord a => Max a -> a Источник minimum :: Ord a => Max a -> a Источник foldrMap1 :: (a -> b) -> (a -> b -> b) -> Max a -> b Источник foldlMap1' :: (a -> b) -> (b -> a -> b) -> Max a -> b Источник foldlMap1 :: (a -> b) -> (b -> a -> b) -> Max a -> b Источник foldrMap1' :: (a -> b) -> (a -> b -> b) -> Max a -> b Источник | |||||
| Applicative Max Источник | Начиная с: base-4.9.0.0 |
||||
| Functor Max Источник | Начиная с: base-4.9.0.0 |
||||
| Monad Max Источник | Начиная с: base-4.9.0.0 |
||||
| MonadFix Max Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| Foldable Max Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыfold :: Monoid m => Max m -> m Источник foldMap :: Monoid m => (a -> m) -> Max a -> m Источник foldMap' :: Monoid m => (a -> m) -> Max a -> m Источник foldr :: (a -> b -> b) -> b -> Max a -> b Источник foldr' :: (a -> b -> b) -> b -> Max a -> b Источник foldl :: (b -> a -> b) -> b -> Max a -> b Источник foldl' :: (b -> a -> b) -> b -> Max a -> b Источник foldr1 :: (a -> a -> a) -> Max a -> a Источник foldl1 :: (a -> a -> a) -> Max a -> a Источник toList :: Max a -> [a] Источник null :: Max a -> Bool Источник length :: Max a -> Int Источник elem :: Eq a => a -> Max a -> Bool Источник maximum :: Ord a => Max a -> a Источник minimum :: Ord a => Max a -> a Источник | |||||
| Traversable Max Источник | Начиная с: base-4.9.0.0 |
||||
| Generic1 Max Источник | |||||
Определено в Data.Semigroup Ассоциированные типы
| |||||
| (Ord a, Bounded a) => Monoid (Max a) Источник | Начиная с: base-4.9.0.0 |
||||
| Ord a => Semigroup (Max a) Источник | Начиная с: base-4.9.0.0 |
||||
| Eq a => Eq (Max a) Источник | Начиная с: base-4.9.0.0 |
||||
| Ord a => Ord (Max a) Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыcompare :: Max a -> Max a -> Ordering Исходный код (<) :: Max a -> Max a -> Bool Исходный код (<=) :: Max a -> Max a -> Bool Исходный код (>) :: Max a -> Max a -> Bool Исходный код (>=) :: Max a -> Max a -> Bool Исходный код max :: Max a -> Max a -> Max a Исходный код min :: Max a -> Max a -> Max a Исходный код | |||||
| Data a => Data (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) Исходный код toConstr :: Max a -> Constr Исходный код dataTypeOf :: Max a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Max a -> Max a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Max a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Max a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Исходный код | |||||
| Bounded a => Bounded (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| Enum a => Enum (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыsucc :: Max a -> Max a Исходный код pred :: Max a -> Max a Исходный код toEnum :: Int -> Max a Исходный код fromEnum :: Max a -> Int Исходный код enumFrom :: Max a -> [Max a] Исходный код enumFromThen :: Max a -> Max a -> [Max a] Исходный код enumFromTo :: Max a -> Max a -> [Max a] Исходный код enumFromThenTo :: Max a -> Max a -> Max a -> [Max a] Исходный код | |||||
| Generic (Max a) Исходный код | |||||
Определено в Data.Semigroup Ассоциированные типы
| |||||
| Num a => Num (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методы(+) :: Max a -> Max a -> Max a Исходный код (-) :: Max a -> Max a -> Max a Исходный код (*) :: Max a -> Max a -> Max a Исходный код negate :: Max a -> Max a Исходный код abs :: Max a -> Max a Исходный код signum :: Max a -> Max a Исходный код fromInteger :: Integer -> Max a Исходный код | |||||
| Read a => Read (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыreadsPrec :: Int -> ReadS (Max a) Исходный код readList :: ReadS [Max a] Исходный код readPrec :: ReadPrec (Max a) Исходный код readListPrec :: ReadPrec [Max a] Исходный код | |||||
| Show a => Show (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыshowsPrec :: Int -> Max a -> ShowS Исходный код show :: Max a -> String Исходный код showList :: [Max a] -> ShowS Исходный код | |||||
| type Rep1 Max Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| type Rep (Max a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
newtype First a Исходный код
Обратите внимание: Data.Semigroup.First отличается от Data.Monoid.First. Первый просто возвращает первое значение, поэтому Data.Semigroup.First Nothing <> x = Data.Semigroup.First Nothing. Второй возвращает первое значение, отличное от Nothing, следовательно Data.Monoid.First Nothing <> x = x.
Примеры
>>> First 0 <> First 10
First {getFirst = 0}
>>> sconcat $ First 1 :| [ First n | n <- [2 ..] ]
First {getFirst = 1}
Экземпляры
Определено в Data.Semigroup Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) Источник toConstr :: First a -> Constr Источник dataTypeOf :: First a -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a)) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) Источник gmapT :: (forall b. Data b => b -> b) -> First a -> First a Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Источник gmapQ :: (forall d. Data d => d -> u) -> First a -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> First a -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a) Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Источник | |||||
| Bounded a => Bounded (First a) Источник | Начиная с: base-4.9.0.0 |
||||
| Enum a => Enum (First a) Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыsucc :: First a -> First a Источник pred :: First a -> First a Источник toEnum :: Int -> First a Источник fromEnum :: First a -> Int Источник enumFrom :: First a -> [First a] Источник enumFromThen :: First a -> First a -> [First a] Источник enumFromTo :: First a -> First a -> [First a] Источник enumFromThenTo :: First a -> First a -> First a -> [First a] Источник | |||||
| Generic (First a) Источник | |||||
Определено в Data.Semigroup Связанные типы
| |||||
| Read a => Read (First a) Источник | Начиная с: base-4.9.0.0 |
||||
| Show a => Show (First a) Источник | Начиная с: base-4.9.0.0 |
||||
| type Rep1 First Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| type Rep (First a) Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
Обратите внимание: Data.Semigroup.Last отличается от Data.Monoid.Last. Первый просто возвращает последнее значение, поэтому x <> Data.Semigroup.Last Nothing = Data.Semigroup.Last Nothing. Второй возвращает последнее значение, не равное Nothing, следовательно, x <> Data.Monoid.Last Nothing = x.
Примеры
>>> Last 0 <> Last 10
Last {getLast = 10}
>>> sconcat $ Last 1 :| [ Last n | n <- [2..]] * Hangs forever *
Экземпляры
| Foldable1 Last Источник | Начиная с: base-4.18.0.0 |
||||
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Last m -> m Источник foldMap1 :: Semigroup m => (a -> m) -> Last a -> m Источник foldMap1' :: Semigroup m => (a -> m) -> Last a -> m Источник toNonEmpty :: Last a -> NonEmpty a Источник maximum :: Ord a => Last a -> a Источник minimum :: Ord a => Last a -> a Источник foldrMap1 :: (a -> b) -> (a -> b -> b) -> Last a -> b Источник foldlMap1' :: (a -> b) -> (b -> a -> b) -> Last a -> b Источник foldlMap1 :: (a -> b) -> (b -> a -> b) -> Last a -> b Источник foldrMap1' :: (a -> b) -> (a -> b -> b) -> Last a -> b Источник | |||||
| Applicative Last Источник | Начиная с: base-4.9.0.0 |
||||
| Functor Last Источник | Начиная с: base-4.9.0.0 |
||||
| Monad Last Источник | Начиная с: base-4.9.0.0 |
||||
| MonadFix Last Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| Foldable Last Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыfold :: Monoid m => Last m -> m Источник foldMap :: Monoid m => (a -> m) -> Last a -> m Источник foldMap' :: Monoid m => (a -> m) -> Last a -> m Источник foldr :: (a -> b -> b) -> b -> Last a -> b Источник foldr' :: (a -> b -> b) -> b -> Last a -> b Источник foldl :: (b -> a -> b) -> b -> Last a -> b Источник foldl' :: (b -> a -> b) -> b -> Last a -> b Источник foldr1 :: (a -> a -> a) -> Last a -> a Источник foldl1 :: (a -> a -> a) -> Last a -> a Источник toList :: Last a -> [a] Источник null :: Last a -> Bool Источник length :: Last a -> Int Источник elem :: Eq a => a -> Last a -> Bool Источник maximum :: Ord a => Last a -> a Источник minimum :: Ord a => Last a -> a Источник | |||||
| Traversable Last Источник | Начиная с: base-4.9.0.0 |
||||
| Generic1 Last Источник | |||||
Определено в Data.Semigroup Ассоциированные типы
| |||||
| Semigroup (Last a) Источник | Начиная с: base-4.9.0.0 |
||||
| Eq a => Eq (Last a) Источник | Начиная с: base-4.9.0.0 |
||||
| Ord a => Ord (Last a) Источник | Начиная с: base-4.9.0.0 |
||||
| Data a => Data (Last a) Источник | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) Исходный код toConstr :: Last a -> Constr Исходный код dataTypeOf :: Last a -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) Исходный код gmapT :: (forall b. Data b => b -> b) -> Last a -> Last a Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Last a -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Last a -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Исходный код | |||||
| Bounded a => Bounded (Last a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| Enum a => Enum (Last a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup Методыsucc :: Last a -> Last a Исходный код pred :: Last a -> Last a Исходный код toEnum :: Int -> Last a Исходный код fromEnum :: Last a -> Int Исходный код enumFrom :: Last a -> [Last a] Исходный код enumFromThen :: Last a -> Last a -> [Last a] Исходный код enumFromTo :: Last a -> Last a -> [Last a] Исходный код enumFromThenTo :: Last a -> Last a -> Last a -> [Last a] Исходный код | |||||
| Generic (Last a) Исходный код | |||||
Определено в Data.Semigroup Связанные типы
| |||||
| Read a => Read (Last a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыreadsPrec :: Int -> ReadS (Last a) Исходный код readList :: ReadS [Last a] Исходный код readPrec :: ReadPrec (Last a) Исходный код readListPrec :: ReadPrec [Last a] Исходный код | |||||
| Show a => Show (Last a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup МетодыshowsPrec :: Int -> Last a -> ShowS Исходный код show :: Last a -> String Исходный код showList :: [Last a] -> ShowS Исходный код | |||||
| type Rep1 Last Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
| type Rep (Last a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в Data.Semigroup | |||||
newtype WrappedMonoid m Исходный код
Предоставляет Semigroup для произвольного моноида.
ПРИМЕЧАНИЕ: Это больше не требуется, поскольку Semigroup стал суперклассом Monoid в base-4.11; в будущем этот newtype будет объявлен устаревшим.
Конструкторы
| WrapMonoid | |
Поля
| |
Экземпляры
| Generic1 WrappedMonoid Исходный код | |||||
Определён в Data.Semigroup Ассоциированные типы
Методыfrom1 :: WrappedMonoid a -> Rep1 WrappedMonoid a Исходный код to1 :: Rep1 WrappedMonoid a -> WrappedMonoid a Исходный код | |||||
| Monoid m => Monoid (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыmempty :: WrappedMonoid m Исходный код mappend :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Исходный код mconcat :: [WrappedMonoid m] -> WrappedMonoid m Исходный код | |||||
| Monoid m => Semigroup (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методы(<>) :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Исходный код sconcat :: NonEmpty (WrappedMonoid m) -> WrappedMonoid m Исходный код stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Исходный код | |||||
| Eq m => Eq (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методы(==) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код (/=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код | |||||
| Ord m => Ord (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыcompare :: WrappedMonoid m -> WrappedMonoid m -> Ordering Исходный код (<) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код (<=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код (>) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код (>=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Исходный код max :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Исходный код min :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Исходный код | |||||
| Data m => Data (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) Исходный код toConstr :: WrappedMonoid m -> Constr Исходный код dataTypeOf :: WrappedMonoid m -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) Исходный код gmapT :: (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u Исходный код gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Исходный код gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Исходный код gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Исходный код | |||||
| Bounded m => Bounded (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup | |||||
| Enum a => Enum (WrappedMonoid a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыsucc :: WrappedMonoid a -> WrappedMonoid a Исходный код pred :: WrappedMonoid a -> WrappedMonoid a Исходный код toEnum :: Int -> WrappedMonoid a Исходный код fromEnum :: WrappedMonoid a -> Int Исходный код enumFrom :: WrappedMonoid a -> [WrappedMonoid a] Исходный код enumFromThen :: WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] Исходный код enumFromTo :: WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] Исходный код enumFromThenTo :: WrappedMonoid a -> WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] Исходный код | |||||
| Generic (WrappedMonoid m) Исходный код | |||||
Определён в Data.Semigroup Ассоциированные типы
Методыfrom :: WrappedMonoid m -> Rep (WrappedMonoid m) x Исходный код to :: Rep (WrappedMonoid m) x -> WrappedMonoid m Исходный код | |||||
| Read m => Read (WrappedMonoid m) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup МетодыreadsPrec :: Int -> ReadS (WrappedMonoid m) Исходный код readList :: ReadS [WrappedMonoid m] Исходный код | |||||
| Show m => Show (WrappedMonoid m) Источник | Начиная с: base-4.9.0.0 |
Определён в Data.Semigroup МетодыshowsPrec :: Int -> WrappedMonoid m -> ShowS Источник show :: WrappedMonoid m -> String Источник showList :: [WrappedMonoid m] -> ShowS Источник | |
| type Rep1 WrappedMonoid Источник | Начиная с: base-4.9.0.0 |
Определён в Data.Semigroup type Rep1 WrappedMonoid = D1 ('MetaData "WrappedMonoid" "Data.Semigroup" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapMonoid" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonoid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
| type Rep (WrappedMonoid m) Источник | Начиная с: base-4.9.0.0 |
Определён в Data.Semigroup type Rep (WrappedMonoid m) = D1 ('MetaData "WrappedMonoid" "Data.Semigroup" "base-4.22.0.0-66f8" 'True) (C1 ('MetaCons "WrapMonoid" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapMonoid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 m))) | |
Повторно экспортируемые моноиды
Двойственный Monoid, полученный перестановкой аргументов (<>).
Dual a <> Dual b == Dual (b <> a)
Примеры
>>> Dual "Hello" <> Dual "World"
Dual {getDual = "WorldHello"}
>>> Dual (Dual "Hello") <> Dual (Dual "World")
Dual {getDual = Dual {getDual = "HelloWorld"}}
Экземпляры
| Foldable1 Dual Исходный код | Начиная с: base-4.18.0.0 |
||||
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Dual m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Dual a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Dual a -> m Исходный код toNonEmpty :: Dual a -> NonEmpty a Исходный код maximum :: Ord a => Dual a -> a Исходный код minimum :: Ord a => Dual a -> a Исходный код head :: Dual a -> a Исходный код last :: Dual a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Dual a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Dual a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Dual a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Dual a -> b Исходный код | |||||
| 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 Исходный код | |||||
| Functor Dual Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Monad Dual Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методы(>>=) :: Dual a -> (a -> Dual b) -> Dual b Исходный код (>>) :: Dual a -> Dual b -> Dual b Исходный код return :: a -> Dual a Исходный код | |||||
| MonadFix Dual Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Control.Monad.Fix Методыmfix :: (a -> Dual a) -> Dual a Исходный код | |||||
| MonadZip Dual Исходный код | Начиная с: ghc-internal-4.8.0.0 |
||||
Определено в GHC.Internal.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) Исходный код | |||||
| Foldable Dual Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Foldable Методыfold :: Monoid m => Dual m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Dual a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Dual a -> m Исходный код foldr :: (a -> b -> b) -> b -> Dual a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Dual a -> b Исходный код foldl :: (b -> a -> b) -> b -> Dual a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Dual a -> b Исходный код foldr1 :: (a -> a -> a) -> Dual a -> a Исходный код foldl1 :: (a -> a -> a) -> Dual a -> a Исходный код toList :: Dual a -> [a] Исходный код null :: Dual a -> Bool Исходный код length :: Dual a -> Int Исходный код elem :: Eq a => a -> Dual a -> Bool Исходный код maximum :: Ord a => Dual a -> a Исходный код minimum :: Ord a => Dual a -> a Исходный код sum :: Num a => Dual a -> a Исходный код product :: Num a => Dual a -> a Исходный код | |||||
| Traversable Dual Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.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) Исходный код | |||||
| Generic1 Dual Исходный код | |||||
Определено в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Monoid a => Monoid (Dual a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методыmempty :: Dual a Исходный код mappend :: Dual a -> Dual a -> Dual a Исходный код mconcat :: [Dual a] -> Dual a Исходный код | |||||
| Semigroup a => Semigroup (Dual a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методы(<>) :: Dual a -> Dual a -> Dual a Исходный код sconcat :: NonEmpty (Dual a) -> Dual a Исходный код stimes :: Integral b => b -> Dual a -> Dual a Исходный код | |||||
| Eq a => Eq (Dual a) Исходный код | Начиная с: base-2.1 |
||||
| Ord a => Ord (Dual a) Источник | С версии: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Data a => Data (Dual a) Источник | С версии: base-4.8.0.0 |
||||
Определено в GHC.Internal.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) Источник | |||||
| Bounded a => Bounded (Dual a) Источник | С версии: base-2.1 |
||||
| Generic (Dual a) Источник | |||||
Определено в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Read a => Read (Dual a) Источник | С версии: base-2.1 |
||||
| Show a => Show (Dual a) Источник | С версии: base-2.1 |
||||
| type Rep1 Dual Источник | С версии: base-4.7.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Dual a) Источник | С версии: base-4.7.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
Моноид эндоморфизмов относительно композиции.
Endo f <> Endo g == Endo (f . g)
Примеры
>>> let computation = Endo ("Hello, " ++) <> Endo (++ "!")
>>> appEndo computation "Haskell"
"Hello, Haskell!"
>>> let computation = Endo (*3) <> Endo (+1) >>> appEndo computation 1 6
Экземпляры
| Monoid (Endo a) Источник | С версии: base-2.1 |
||||
| Semigroup (Endo a) Источник | С версии: base-4.9.0.0 |
||||
| Generic (Endo a) Источник | |||||
Определён в GHC.Internal.Data.Semigroup.Internal Ассоциированные типы
| |||||
| type Rep (Endo a) Источник | С версии: base-4.7.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal | |||||
Булева моноида относительно конъюнкции (&&).
All x <> All y = All (x && y)
Примеры
>>> All True <> mempty <> All False)
All {getAll = False}
>>> mconcat (map (\x -> All (even x)) [2,4,6,7,8])
All {getAll = False}
>>> All True <> mempty
All {getAll = True}
Экземпляры
| Monoid All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Semigroup All Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методы(<>) :: All -> All -> All Исходный код sconcat :: NonEmpty All -> All Исходный код stimes :: Integral b => b -> All -> All Исходный код | |||||
| Eq All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Ord All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методыcompare :: All -> All -> Ordering Исходный код (<) :: All -> All -> Bool Исходный код (<=) :: All -> All -> Bool Исходный код (>) :: All -> All -> Bool Исходный код (>=) :: All -> All -> Bool Исходный код max :: All -> All -> All Исходный код min :: All -> All -> All Исходный код | |||||
| Data All Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> All -> c All Исходный код gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c All Исходный код toConstr :: All -> Constr Исходный код dataTypeOf :: All -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c All) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c All) Исходный код gmapT :: (forall b. Data b => b -> b) -> All -> All Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> All -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> All -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> All -> m All Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Исходный код | |||||
| Bounded All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Generic All Исходный код | |||||
Определено в GHC.Internal.Data.Semigroup.Internal Ассоциированные типы
| |||||
| Read All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal МетодыreadsPrec :: Int -> ReadS All Исходный код readList :: ReadS [All] Исходный код | |||||
| Show All Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal МетодыshowsPrec :: Int -> All -> ShowS Исходный код show :: All -> String Исходный код showList :: [All] -> ShowS Исходный код | |||||
| type Rep All Исходный код | Начиная с: base-4.7.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
newtype Any Исходный код
Булева моноида относительно дизъюнкции (||).
Any x <> Any y = Any (x || y)
Примеры
>>> Any True <> mempty <> Any False
Any {getAny = True}
>>> mconcat (map (\x -> Any (even x)) [2,4,6,7,8])
Any {getAny = True}
>>> Any False <> mempty
Any {getAny = False}
Экземпляры
| Monoid Any Источник | Начиная с: base-2.1 |
||||
| Semigroup Any Источник | Начиная с: base-4.9.0.0 |
||||
| Eq Any Источник | Начиная с: base-2.1 |
||||
| Ord Any Источник | Начиная с: base-2.1 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal | |||||
| Data Any Источник | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Any -> c Any Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Any Источник toConstr :: Any -> Constr Источник dataTypeOf :: Any -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Any) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Any) Источник gmapT :: (forall b. Data b => b -> b) -> Any -> Any Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Any -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Any -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Any -> m Any Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Источник | |||||
| Bounded Any Источник | Начиная с: base-2.1 |
||||
| Generic Any Источник | |||||
Определён в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Read Any Источник | Начиная с: base-2.1 |
||||
| Show Any Источник | Начиная с: base-2.1 |
||||
| type Rep Any Источник | Начиная с: base-4.7.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal | |||||
Моноид относительно сложения.
Sum a <> Sum b = Sum (a + b)
Примеры
>>> Sum 1 <> Sum 2 <> mempty
Sum {getSum = 3}
>>> mconcat [ Sum n | n <- [3 .. 9]]
Sum {getSum = 42}
Экземпляры
| Foldable1 Sum Исходный код | Начиная с: base-4.18.0.0 |
||||
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Sum m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Sum a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Sum a -> m Исходный код toNonEmpty :: Sum a -> NonEmpty a Исходный код maximum :: Ord a => Sum a -> a Исходный код minimum :: Ord a => Sum a -> a Исходный код head :: Sum a -> a Исходный код last :: Sum a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Sum a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Sum a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Sum a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Sum a -> b Исходный код | |||||
| 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 Исходный код | |||||
| Functor Sum Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Monad Sum Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методы(>>=) :: Sum a -> (a -> Sum b) -> Sum b Исходный код (>>) :: Sum a -> Sum b -> Sum b Исходный код return :: a -> Sum a Исходный код | |||||
| MonadFix Sum Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Control.Monad.Fix Методыmfix :: (a -> Sum a) -> Sum a Исходный код | |||||
| MonadZip Sum Исходный код | Начиная с: ghc-internal-4.8.0.0 |
||||
Определено в GHC.Internal.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) Исходный код | |||||
| Foldable Sum Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.Data.Foldable Методыfold :: Monoid m => Sum m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Sum a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Sum a -> m Исходный код foldr :: (a -> b -> b) -> b -> Sum a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Sum a -> b Исходный код foldl :: (b -> a -> b) -> b -> Sum a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Sum a -> b Исходный код foldr1 :: (a -> a -> a) -> Sum a -> a Исходный код foldl1 :: (a -> a -> a) -> Sum a -> a Исходный код toList :: Sum a -> [a] Исходный код null :: Sum a -> Bool Исходный код length :: Sum a -> Int Исходный код elem :: Eq a => a -> Sum a -> Bool Исходный код maximum :: Ord a => Sum a -> a Исходный код minimum :: Ord a => Sum a -> a Исходный код sum :: Num a => Sum a -> a Исходный код product :: Num a => Sum a -> a Исходный код | |||||
| Traversable Sum Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.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) Исходный код | |||||
| Generic1 Sum Исходный код | |||||
Определено в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Num a => Monoid (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методыmempty :: Sum a Исходный код mappend :: Sum a -> Sum a -> Sum a Исходный код mconcat :: [Sum a] -> Sum a Исходный код | |||||
| Num a => Semigroup (Sum a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методы(<>) :: Sum a -> Sum a -> Sum a Исходный код sconcat :: NonEmpty (Sum a) -> Sum a Исходный код stimes :: Integral b => b -> Sum a -> Sum a Исходный код | |||||
| Eq a => Eq (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Ord a => Ord (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal Методыcompare :: Sum a -> Sum a -> Ordering Исходный код (<) :: Sum a -> Sum a -> Bool Исходный код (<=) :: Sum a -> Sum a -> Bool Исходный код (>) :: Sum a -> Sum a -> Bool Исходный код (>=) :: Sum a -> Sum a -> Bool Исходный код max :: Sum a -> Sum a -> Sum a Исходный код min :: Sum a -> Sum a -> Sum a Исходный код | |||||
| Data a => Data (Sum a) Исходный код | Начиная с: base-4.8.0.0 |
||||
Определено в GHC.Internal.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) Исходный код | |||||
| Bounded a => Bounded (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| Generic (Sum a) Исходный код | |||||
Определено в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Num a => Num (Sum a) Исходный код | Начиная с: base-4.7.0.0 |
||||
Определено в GHC.Internal.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 Исходный код | |||||
| Read a => Read (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal МетодыreadsPrec :: Int -> ReadS (Sum a) Исходный код readList :: ReadS [Sum a] Исходный код readPrec :: ReadPrec (Sum a) Исходный код readListPrec :: ReadPrec [Sum a] Исходный код | |||||
| Show a => Show (Sum a) Исходный код | Начиная с: base-2.1 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal МетодыshowsPrec :: Int -> Sum a -> ShowS Исходный код show :: Sum a -> String Исходный код showList :: [Sum a] -> ShowS Исходный код | |||||
| type Rep1 Sum Исходный код | Начиная с: base-4.7.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Sum a) Исходный код | Начиная с: base-4.7.0.0 |
||||
Определено в GHC.Internal.Data.Semigroup.Internal | |||||
newtype Product a Исходный код
Моноид относительно умножения.
Product x <> Product y == Product (x * y)
Примеры
>>> Product 3 <> Product 4 <> mempty
Product {getProduct = 12}
>>> mconcat [ Product n | n <- [2 .. 10]]
Product {getProduct = 3628800}
Конструкторы
| Product | |
Поля
| |
Экземпляры
| Foldable1 Product Исходный код | Начиная с: base-4.18.0.0 |
||||
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Product m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Product a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Product a -> m Исходный код toNonEmpty :: Product a -> NonEmpty a Исходный код maximum :: Ord a => Product a -> a Исходный код minimum :: Ord a => Product a -> a Исходный код head :: Product a -> a Исходный код last :: Product a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Product a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Product a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Product a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Product a -> b Исходный код | |||||
| 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 Исходный код | |||||
| Functor Product Исходный код | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal Методыfmap :: (a -> b) -> Product a -> Product b Исходный код (<$) :: a -> Product b -> Product a Исходный код | |||||
| Monad Product Исходный код | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal Методы(>>=) :: Product a -> (a -> Product b) -> Product b Исходный код (>>) :: Product a -> Product b -> Product b Исходный код return :: a -> Product a Исходный код | |||||
| MonadFix Product Исходный код | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Control.Monad.Fix Методыmfix :: (a -> Product a) -> Product a Исходный код | |||||
| MonadZip Product Исходный код | Начиная с: ghc-internal-4.8.0.0 |
||||
Определён в GHC.Internal.Control.Monad.Zip Методыmzip :: Product a -> Product b -> Product (a, b) Исходный код mzipWith :: (a -> b -> c) -> Product a -> Product b -> Product c Исходный код munzip :: Product (a, b) -> (Product a, Product b) Исходный код | |||||
| Foldable Product Исходный код | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Foldable Методыfold :: Monoid m => Product m -> m Исходный код foldMap :: Monoid m => (a -> m) -> Product a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> Product a -> m Исходный код foldr :: (a -> b -> b) -> b -> Product a -> b Исходный код foldr' :: (a -> b -> b) -> b -> Product a -> b Исходный код foldl :: (b -> a -> b) -> b -> Product a -> b Исходный код foldl' :: (b -> a -> b) -> b -> Product a -> b Исходный код foldr1 :: (a -> a -> a) -> Product a -> a Исходный код foldl1 :: (a -> a -> a) -> Product a -> a Исходный код toList :: Product a -> [a] Исходный код null :: Product a -> Bool Исходный код length :: Product a -> Int Исходный код elem :: Eq a => a -> Product a -> Bool Исходный код maximum :: Ord a => Product a -> a Исходный код minimum :: Ord a => Product a -> a Исходный код sum :: Num a => Product a -> a Исходный код product :: Num a => Product a -> a Исходный код | |||||
| Traversable Product Исходный код | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Traversable Методыtraverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) Исходный код sequenceA :: Applicative f => Product (f a) -> f (Product a) Исходный код mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) Исходный код sequence :: Monad m => Product (m a) -> m (Product a) Исходный код | |||||
| Generic1 Product Исходный код | |||||
Определён в GHC.Internal.Data.Semigroup.Internal Связанные типы
Методыfrom1 :: Product a -> Rep1 Product a Исходный код to1 :: Rep1 Product a -> Product a Исходный код | |||||
| Num a => Monoid (Product a) Исходный код | Начиная с: base-2.1 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal Методыmempty :: Product a Исходный код mappend :: Product a -> Product a -> Product a Исходный код mconcat :: [Product a] -> Product a Исходный код | |||||
| Num a => Semigroup (Product a) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal Методы(<>) :: Product a -> Product a -> Product a Исходный код sconcat :: NonEmpty (Product a) -> Product a Исходный код stimes :: Integral b => b -> Product a -> Product a Исходный код | |||||
| Eq a => Eq (Product a) Источник | Начиная с: base-2.1 |
||||
| Ord a => Ord (Product a) Источник | Начиная с: base-2.1 |
||||
Определён в GHC.Internal.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 Источник | |||||
| Data a => Data (Product a) Источник | Начиная с: base-4.8.0.0 |
||||
Определён в GHC.Internal.Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Product a -> c (Product a) Источник gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Product a) Источник toConstr :: Product a -> Constr Источник dataTypeOf :: Product a -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Product a)) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Product a)) Источник gmapT :: (forall b. Data b => b -> b) -> Product a -> Product a Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Product a -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Product a -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Источник | |||||
| Bounded a => Bounded (Product a) Источник | Начиная с: base-2.1 |
||||
| Generic (Product a) Источник | |||||
Определён в GHC.Internal.Data.Semigroup.Internal Связанные типы
| |||||
| Num a => Num (Product a) Источник | Начиная с: base-4.7.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal Методы(+) :: Product a -> Product a -> Product a Источник (-) :: Product a -> Product a -> Product a Источник (*) :: Product a -> Product a -> Product a Источник negate :: Product a -> Product a Источник abs :: Product a -> Product a Источник signum :: Product a -> Product a Источник fromInteger :: Integer -> Product a Источник | |||||
| Read a => Read (Product a) Источник | Начиная с: base-2.1 |
||||
| Show a => Show (Product a) Источник | Начиная с: base-2.1 |
||||
| type Rep1 Product Источник | Начиная с: base-4.7.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Product a) Источник | Начиная с: base-4.7.0.0 |
||||
Определён в GHC.Internal.Data.Semigroup.Internal | |||||
Разностные списки полугруппы
diff :: Semigroup m => m -> Endo m Источник
Это позволяет использовать разностный список Semigroup в качестве Monoid.
Примеры
>>> let hello = diff "Hello, "
>>> appEndo hello "World!" "Hello, World!"
>>> appEndo (hello <> mempty) "World!" "Hello, World!"
>>> appEndo (mempty <> hello) "World!" "Hello, World!"
>>> let world = diff "World" >>> let excl = diff "!"
>>> appEndo (hello <> (world <> excl)) mempty "Hello, World!"
>>> appEndo ((hello <> world) <> excl) mempty "Hello, World!"
cycle1 :: Semigroup m => m -> m Источник
Обобщение cycle на произвольный Semigroup. Для некоторых значений в некоторых полугруппах вычисление может не завершиться.
Примеры
>>> take 10 $ cycle1 [1, 2, 3] [1,2,3,1,2,3,1,2,3,1]
>>> cycle1 (Right 1) Right 1
>>> cycle1 (Left 1) * Hangs forever *
ArgMin, ArgMax
Arg сам по себе не является Semigroup, но его можно поместить внутрь Min и Max, чтобы вычислить arg min или arg max. При равенстве выбирается крайний слева подходящий Arg; это отличается от поведения minimum и maximum для многих других типов, где равенство разрешается с учётом того, что элементы слева в структуре считаются меньшими элементов справа.
Примеры
>>> minimum [ Arg (x * x) x | x <- [-10 .. 10] ] Arg 0 0
>>> maximum [ Arg (-0.2*x^2 + 1.5*x + 1) x | x <- [-10 .. 10] ] Arg 3.8 4.0
>>> minimum [ Arg (-0.2*x^2 + 1.5*x + 1) x | x <- [-10 .. 10] ] Arg (-34.0) (-10.0)
Конструкторы
| Arg | |
Экземпляры
| Bifoldable Arg Источник | Начиная с: base-4.10.0.0 |
||||
| Bifoldable1 Arg Источник | |||||
Определён в Data.Bifoldable1 | |||||
| Bifunctor Arg Источник | Начиная с: base-4.9.0.0 |
||||
| Bitraversable Arg Источник | Начиная с: base-4.10.0.0 |
||||
Определён в Data.Semigroup Методыbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Arg a b -> f (Arg c d) Источник | |||||
| Generic1 (Arg a :: Type -> Type) Источник | |||||
Определён в Data.Semigroup Ассоциированные типы
| |||||
| Functor (Arg a) Источник | Начиная с: base-4.9.0.0 |
||||
| Foldable (Arg a) Источник | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыfold :: Monoid m => Arg a m -> m Источник foldMap :: Monoid m => (a0 -> m) -> Arg a a0 -> m Источник foldMap' :: Monoid m => (a0 -> m) -> Arg a a0 -> m Источник foldr :: (a0 -> b -> b) -> b -> Arg a a0 -> b Источник foldr' :: (a0 -> b -> b) -> b -> Arg a a0 -> b Источник foldl :: (b -> a0 -> b) -> b -> Arg a a0 -> b Источник foldl' :: (b -> a0 -> b) -> b -> Arg a a0 -> b Источник foldr1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Источник foldl1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Источник toList :: Arg a a0 -> [a0] Источник null :: Arg a a0 -> Bool Источник length :: Arg a a0 -> Int Источник elem :: Eq a0 => a0 -> Arg a a0 -> Bool Источник maximum :: Ord a0 => Arg a a0 -> a0 Источник minimum :: Ord a0 => Arg a a0 -> a0 Источник | |||||
| Traversable (Arg a) Источник | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup | |||||
| Eq a => Eq (Arg a b) Источник |
Обратите внимание, что экземпляр >>> Arg 0 0 == Arg 0 1 True >>> let f (Arg _ x) = x in f (Arg 0 0) == f (Arg 0 1) False Начиная с: base-4.9.0.0 |
||||
| Ord a => Ord (Arg a b) Источник |
Обратите внимание, что экземпляр Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup | |||||
| (Data a, Data b) => Data (Arg a b) Источник | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup Методыgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) Исходный код gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) Исходный код toConstr :: Arg a b -> Constr Исходный код dataTypeOf :: Arg a b -> DataType Исходный код dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) Исходный код dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) Исходный код gmapT :: (forall b0. Data b0 => b0 -> b0) -> Arg a b -> Arg a b Исходный код gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r Исходный код gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r Исходный код gmapQ :: (forall d. Data d => d -> u) -> Arg a b -> [u] Исходный код gmapQi :: Int -> (forall d. Data d => d -> u) -> Arg a b -> u Исходный код gmapM :: Monad m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Исходный код gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Исходный код gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Исходный код | |||||
| Generic (Arg a b) Исходный код | |||||
Определён в Data.Semigroup Связанные типы
Методыfrom :: Arg a b -> Rep (Arg a b) x Исходный код to :: Rep (Arg a b) x -> Arg a b Исходный код | |||||
| (Read a, Read b) => Read (Arg a b) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup МетодыreadsPrec :: Int -> ReadS (Arg a b) Исходный код readList :: ReadS [Arg a b] Исходный код readPrec :: ReadPrec (Arg a b) Исходный код readListPrec :: ReadPrec [Arg a b] Исходный код | |||||
| (Show a, Show b) => Show (Arg a b) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup МетодыshowsPrec :: Int -> Arg a b -> ShowS Исходный код show :: Arg a b -> String Исходный код showList :: [Arg a b] -> ShowS Исходный код | |||||
| type Rep1 (Arg a :: Type -> Type) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup type Rep1 (Arg a :: Type -> Type) = D1 ('MetaData "Arg" "Data.Semigroup" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons "Arg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |||||
| type Rep (Arg a b) Исходный код | Начиная с: base-4.9.0.0 |
||||
Определён в Data.Semigroup type Rep (Arg a b) = D1 ('MetaData "Arg" "Data.Semigroup" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons "Arg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b))) | |||||
type ArgMin a b = Min (Arg a b) Исходный код
Примеры
>>> Min (Arg 0 ()) <> Min (Arg 1 ())
Min {getMin = Arg 0 ()}
>>> minimum [ Arg (length name) name | name <- ["violencia", "lea", "pixie"]] Arg 3 "lea"
type ArgMax a b = Max (Arg a b) Исходный код
Примеры
>>> Max (Arg 0 ()) <> Max (Arg 1 ())
Max {getMax = Arg 1 ()}
>>> maximum [ Arg (length name) name | name <- ["violencia", "lea", "pixie"]] Arg 9 "violencia"
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Semigroup.html