Data.Foldable1
| Авторские права | Edward Kmett Oleg Grenrus |
|---|---|
| Лицензия | BSD-3-Clause |
| Безопасный Haskell | Trustworthy |
| Язык | Haskell2010 |
Описание
Класс непустых структур данных, которые можно свести к итоговому значению.
С версии: base-4.18.0.0
class Foldable t => Foldable1 (t :: Type -> Type) where Источник
Непустые структуры данных, которые можно сворачивать.
С версии: base-4.18.0.0
Методы
fold1 :: Semigroup m => t m -> m Источник
Для структуры с элементами типа Semigroup объединяет их с помощью оператора (<>) полугруппы. Это свёртка с ассоциативностью справа, ленивая по аккумулятору. Если нужна строгая свёртка с ассоциативностью слева, используйте вместо неё foldMap1', передав в качестве отображения id.
С версии: base-4.18.0.0
foldMap1 :: Semigroup m => (a -> m) -> t a -> m Источник
Отображает каждый элемент структуры в полугруппу и объединяет результаты с помощью (<>). Это свёртка с ассоциативностью справа, ленивая по аккумулятору. Для строгих свёрток с ассоциативностью слева используйте вместо неё foldMap1'.
>>> foldMap1 (:[]) (1 :| [2, 3, 4]) [1,2,3,4]
С версии: base-4.18.0.0
foldMap1' :: Semigroup m => (a -> m) -> t a -> m Источник
Вариант foldMap1 с ассоциативностью слева, строгий по аккумулятору. Используйте его для строгого свёртывания, когда частичные результаты объединяются с помощью (<>).
>>> foldMap1' Sum (1 :| [2, 3, 4])
Sum {getSum = 10}
С версии: base-4.18.0.0
toNonEmpty :: t a -> NonEmpty a Источник
NonEmpty элементов структуры в виде списка, слева направо.
>>> toNonEmpty (Identity 2) 2 :| []
С версии: base-4.18.0.0
maximum :: Ord a => t a -> a Источник
Наибольший элемент непустой структуры. Эта функция эквивалентна foldr1 max, а её поведение для структур с несколькими наибольшими элементами зависит от соответствующей реализации max. В стандартной реализации max (max x
y = if x <= y then y else x) для разрешения равенства используется порядок элементов структуры: если наибольших элементов несколько, выбирается самый правый (это эквивалентно maximumBy compare).
>>> maximum (32 :| [64, 8, 128, 16]) 128
С версии: base-4.18.0.0
minimum :: Ord a => t a -> a Источник
Наименьший элемент непустой структуры. Эта функция эквивалентна foldr1 min, а её поведение для структур с несколькими наибольшими элементами зависит от соответствующей реализации min. В стандартной реализации min (min x
y = if x <= y then x else y) для разрешения равенства используется порядок элементов структуры: если наименьших элементов несколько, выбирается самый левый (это эквивалентно minimumBy compare).
>>> minimum (32 :| [64, 8, 128, 16]) 8
С версии: base-4.18.0.0
Первый элемент непустой структуры.
>>> head (1 :| [2, 3, 4]) 1
С версии: base-4.18.0.0
Последний элемент непустой структуры.
>>> last (1 :| [2, 3, 4]) 4
С версии: base-4.18.0.0
foldrMap1 :: (a -> b) -> (a -> b -> b) -> t a -> b Источник
Свёртка структуры с ассоциативностью справа, ленивая по аккумулятору.
Для NonEmpty списков функция foldrMap1, получив функцию f, бинарный оператор g и список, сворачивает список с помощью g справа налево, применяя f к самому правому элементу:
foldrMap1 f g (x1 :| [x2, ..., xn1, xn]) == x1 `g` (x2 `g` ... (xn1 `g` (f xn))...)
Обратите внимание: поскольку начало результирующего выражения получается применением g к первому элементу списка, если g ленив по своему правому аргументу, foldrMap1 может получить завершающееся выражение из неограниченного списка.
Для структуры Foldable1 общего вида это должно быть семантически идентично:
foldrMap1 f g = foldrMap1 f g . toNonEmpty
С версии: base-4.18.0.0
foldlMap1' :: (a -> b) -> (b -> a -> b) -> t a -> b Источник
Свёртка структуры с ассоциативностью слева, при этом оператор применяется строго.
Это гарантирует, что перед применением каждый шаг свёртки приводится к слабой головной нормальной форме (Weak Head Normal Form), предотвращая накопление отложенных вычислений. Такой подход часто нужен, чтобы строго свернуть конечную структуру в один строгий результат.
Для структуры Foldable1 общего вида это должно быть семантически идентично:
foldlMap1' f z = foldlMap1' f z . toNonEmpty
С версии: base-4.18.0.0
foldlMap1 :: (a -> b) -> (b -> a -> b) -> t a -> b Источник
Свёртка структуры с ассоциативностью слева, ленивая по аккумулятору. Обычно это не то, что вам нужно, но она может хорошо работать со структурами, обеспечивающими эффективный обход справа налево, и оператором, ленивым по левому аргументу.
Для NonEmpty списков функция foldlMap1, получив функцию f, бинарный оператор g и список, сворачивает список с помощью g слева направо, применяя f к самому левому элементу:
foldlMap1 f g (x1 :| [x2, ..., xn]) == (...(((f x1) `g` x2) `g`...) `g` xn
Обратите внимание: чтобы получить внешнее применение оператора, необходимо обойти весь входной список. Это означает, что foldlMap1 не завершится при передаче бесконечного списка.
Если вам нужна эффективная строгая свёртка слева, вероятно, следует использовать foldlMap1' вместо foldlMap1. Причина в том, что последняя не вычисляет внутренние результаты (например, (f x1) `g` x2 в приведённом выше примере) перед их передачей оператору (например, (`g` x3)). В результате образуется цепочка отложенных вычислений длиной в \(O(n)\) элементов, которую затем необходимо вычислять снаружи внутрь.
Для структуры Foldable1 общего вида это должно быть семантически идентично:
foldlMap1 f g = foldlMap1 f g . toNonEmpty
С версии: base-4.18.0.0
foldrMap1' :: (a -> b) -> (a -> b -> b) -> t a -> b Источник
foldrMap1' — вариант foldrMap1, который выполняет строгое свёртывание справа налево, то есть начиная с самого правого элемента. Входная структура должна быть конечной, иначе foldrMap1' исчерпает память (не завершится).
Для строгой свёртки справа с постоянным использованием памяти нужна структура, которая обеспечивает доступ к самому правому элементу быстрее, чем за \(O(n)\).
Этот метод не использует постоянное количество памяти для таких структур, как NonEmpty списки, которые не поддерживают эффективный обход справа налево и поэтому требуют \(O(n)\) памяти для свёртки справа налево. Использование этого метода с такой структурой указывает на то, что выбранная структура может плохо подходить для данной задачи. Если порядок объединения элементов не важен, используйте вместо него foldlMap1'.
С версии: base-4.18.0.0
Экземпляры
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Identity m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Identity a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Identity a -> m Исходный код toNonEmpty :: Identity a -> NonEmpty a Исходный код maximum :: Ord a => Identity a -> a Исходный код minimum :: Ord a => Identity a -> a Исходный код head :: Identity a -> a Исходный код last :: Identity a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Identity a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Identity a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Identity a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Identity a -> b Исходный код | |
| Foldable1 Down Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Down m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Down a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Down a -> m Исходный код toNonEmpty :: Down a -> NonEmpty a Исходный код maximum :: Ord a => Down a -> a Исходный код minimum :: Ord a => Down a -> a Исходный код head :: Down a -> a Исходный код last :: Down a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Down a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Down a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Down a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Down a -> b Исходный код | |
| 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 Исходный код | |
| 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 Исходный код | |
| 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 Исходный код | |
| Foldable1 Par1 Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Par1 m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Par1 a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Par1 a -> m Исходный код toNonEmpty :: Par1 a -> NonEmpty a Исходный код maximum :: Ord a => Par1 a -> a Исходный код minimum :: Ord a => Par1 a -> a Исходный код head :: Par1 a -> a Исходный код last :: Par1 a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Par1 a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Par1 a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Par1 a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Par1 a -> b Исходный код | |
| Foldable1 Solo Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Solo m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Solo a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Solo a -> m Исходный код toNonEmpty :: Solo a -> NonEmpty a Исходный код maximum :: Ord a => Solo a -> a Исходный код minimum :: Ord a => Solo a -> a Исходный код head :: Solo a -> a Исходный код last :: Solo a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Solo a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Solo a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Solo a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Solo a -> b Исходный код | |
| Foldable1 (V1 :: Type -> Type) Исходный код | С версии: base-4.18.0.0 |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => V1 m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> V1 a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> V1 a -> m Исходный код toNonEmpty :: V1 a -> NonEmpty a Исходный код maximum :: Ord a => V1 a -> a Исходный код minimum :: Ord a => V1 a -> a Исходный код head :: V1 a -> a Исходный код last :: V1 a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> V1 a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> V1 a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> V1 a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> V1 a -> b Исходный код | |
| Foldable1 ((,) a) Исходный код | С версии: base-4.18.0.0 |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => (a, m) -> m Исходный код foldMap1 :: Semigroup m => (a0 -> m) -> (a, a0) -> m Исходный код foldMap1' :: Semigroup m => (a0 -> m) -> (a, a0) -> m Исходный код toNonEmpty :: (a, a0) -> NonEmpty a0 Исходный код maximum :: Ord a0 => (a, a0) -> a0 Исходный код minimum :: Ord a0 => (a, a0) -> a0 Исходный код head :: (a, a0) -> a0 Исходный код last :: (a, a0) -> a0 Исходный код foldrMap1 :: (a0 -> b) -> (a0 -> b -> b) -> (a, a0) -> b Исходный код foldlMap1' :: (a0 -> b) -> (b -> a0 -> b) -> (a, a0) -> b Исходный код foldlMap1 :: (a0 -> b) -> (b -> a0 -> b) -> (a, a0) -> b Исходный код foldrMap1' :: (a0 -> b) -> (a0 -> b -> b) -> (a, a0) -> b Исходный код | |
| Foldable1 f => Foldable1 (Ap f) Исходный код | С версии: base-4.18.0.0 |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Ap f m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Ap f a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Ap f a -> m Исходный код toNonEmpty :: Ap f a -> NonEmpty a Исходный код maximum :: Ord a => Ap f a -> a Исходный код minimum :: Ord a => Ap f a -> a Исходный код head :: Ap f a -> a Исходный код last :: Ap f a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Ap f a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Ap f a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Ap f a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Ap f a -> b Исходный код | |
| Foldable1 f => Foldable1 (Alt f) Исходный код | С версии: base-4.18.0.0 |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Alt f m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Alt f a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Alt f a -> m Исходный код toNonEmpty :: Alt f a -> NonEmpty a Исходный код maximum :: Ord a => Alt f a -> a Исходный код minimum :: Ord a => Alt f a -> a Исходный код head :: Alt f a -> a Исходный код last :: Alt f a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Alt f a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Alt f a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Alt f a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Alt f a -> b Исходный код | |
| Foldable1 f => Foldable1 (Rec1 f) Исходный код | С версии: base-4.18.0.0 |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Rec1 f m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Rec1 f a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Rec1 f a -> m Исходный код toNonEmpty :: Rec1 f a -> NonEmpty a Исходный код maximum :: Ord a => Rec1 f a -> a Исходный код minimum :: Ord a => Rec1 f a -> a Исходный код head :: Rec1 f a -> a Исходный код last :: Rec1 f a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Rec1 f a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Rec1 f a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Rec1 f a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Rec1 f a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (Product f g) Исходный код | Достаточно, чтобы одна из половин произведения была |
Определён в Data.Foldable1 Методыfold1 :: Semigroup m => Product f g m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Product f g a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Product f g a -> m Исходный код toNonEmpty :: Product f g a -> NonEmpty a Исходный код maximum :: Ord a => Product f g a -> a Исходный код minimum :: Ord a => Product f g a -> a Исходный код head :: Product f g a -> a Исходный код last :: Product f g a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Product f g a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Product f g a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Product f g a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Product f g a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (Sum f g) Исходный код | С версии: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Sum f g m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Sum f g a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Sum f g a -> m Исходный код toNonEmpty :: Sum f g a -> NonEmpty a Исходный код maximum :: Ord a => Sum f g a -> a Исходный код minimum :: Ord a => Sum f g a -> a Исходный код head :: Sum f g a -> a Исходный код last :: Sum f g a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Sum f g a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Sum f g a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Sum f g a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Sum f g a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (f :*: g) Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => (f :*: g) m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> (f :*: g) a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> (f :*: g) a -> m Исходный код toNonEmpty :: (f :*: g) a -> NonEmpty a Исходный код maximum :: Ord a => (f :*: g) a -> a Исходный код minimum :: Ord a => (f :*: g) a -> a Исходный код head :: (f :*: g) a -> a Исходный код last :: (f :*: g) a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> (f :*: g) a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> (f :*: g) a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> (f :*: g) a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> (f :*: g) a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (f :+: g) Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => (f :+: g) m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> (f :+: g) a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> (f :+: g) a -> m Исходный код toNonEmpty :: (f :+: g) a -> NonEmpty a Исходный код maximum :: Ord a => (f :+: g) a -> a Исходный код minimum :: Ord a => (f :+: g) a -> a Исходный код head :: (f :+: g) a -> a Исходный код last :: (f :+: g) a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> (f :+: g) a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> (f :+: g) a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> (f :+: g) a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> (f :+: g) a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (Compose f g) Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => Compose f g m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> Compose f g a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> Compose f g a -> m Исходный код toNonEmpty :: Compose f g a -> NonEmpty a Исходный код maximum :: Ord a => Compose f g a -> a Исходный код minimum :: Ord a => Compose f g a -> a Исходный код head :: Compose f g a -> a Исходный код last :: Compose f g a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> Compose f g a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> Compose f g a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> Compose f g a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> Compose f g a -> b Исходный код | |
| (Foldable1 f, Foldable1 g) => Foldable1 (f :.: g) Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => (f :.: g) m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> (f :.: g) a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> (f :.: g) a -> m Исходный код toNonEmpty :: (f :.: g) a -> NonEmpty a Исходный код maximum :: Ord a => (f :.: g) a -> a Исходный код minimum :: Ord a => (f :.: g) a -> a Исходный код head :: (f :.: g) a -> a Исходный код last :: (f :.: g) a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> (f :.: g) a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> (f :.: g) a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> (f :.: g) a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> (f :.: g) a -> b Исходный код | |
| Foldable1 f => Foldable1 (M1 i c f) Исходный код | Начиная с: base-4.18.0.0 |
Определено в Data.Foldable1 Методыfold1 :: Semigroup m => M1 i c f m -> m Исходный код foldMap1 :: Semigroup m => (a -> m) -> M1 i c f a -> m Исходный код foldMap1' :: Semigroup m => (a -> m) -> M1 i c f a -> m Исходный код toNonEmpty :: M1 i c f a -> NonEmpty a Исходный код maximum :: Ord a => M1 i c f a -> a Исходный код minimum :: Ord a => M1 i c f a -> a Исходный код head :: M1 i c f a -> a Исходный код last :: M1 i c f a -> a Исходный код foldrMap1 :: (a -> b) -> (a -> b -> b) -> M1 i c f a -> b Исходный код foldlMap1' :: (a -> b) -> (b -> a -> b) -> M1 i c f a -> b Исходный код foldlMap1 :: (a -> b) -> (b -> a -> b) -> M1 i c f a -> b Исходный код foldrMap1' :: (a -> b) -> (a -> b -> b) -> M1 i c f a -> b Исходный код | |
foldr1 :: Foldable1 t => (a -> a -> a) -> t a -> a Исходный код
Вариант foldrMap1, в котором крайний правый элемент отображается в себя.
Начиная с: base-4.18.0.0
foldr1' :: Foldable1 t => (a -> a -> a) -> t a -> a Исходный код
Вариант foldrMap1', в котором крайний правый элемент отображается в себя.
Начиная с: base-4.18.0.0
foldl1 :: Foldable1 t => (a -> a -> a) -> t a -> a Исходный код
Вариант foldlMap1, в котором крайний левый элемент отображается в себя.
Начиная с: base-4.18.0.0
foldl1' :: Foldable1 t => (a -> a -> a) -> t a -> a Исходный код
Вариант foldlMap1', в котором крайний левый элемент отображается в себя.
Начиная с: base-4.18.0.0
intercalate1 :: (Foldable1 t, Semigroup m) => m -> t m -> m Исходный код
Вставляет m между каждой парой t m.
>>> intercalate1 ", " $ "hello" :| ["how", "are", "you"] "hello, how, are, you"
>>> intercalate1 ", " $ "hello" :| [] "hello"
>>> intercalate1 mempty $ "I" :| ["Am", "Fine", "You?"] "IAmFineYou?"
Начиная с: base-4.18.0.0
foldrM1 :: (Foldable1 t, Monad m) => (a -> a -> m a) -> t a -> m a Исходный код
Монадический свёрточный проход по элементам непустой структуры с ассоциированием вправо, то есть справа налево.
Начиная с: base-4.18.0.0
foldlM1 :: (Foldable1 t, Monad m) => (a -> a -> m a) -> t a -> m a Исходный код
Монадический свёрточный проход по элементам непустой структуры с ассоциированием влево, то есть слева направо.
Начиная с: base-4.18.0.0
foldrMapM1 :: (Foldable1 t, Monad m) => (a -> m b) -> (a -> b -> m b) -> t a -> m b Исходный код
Вариант foldrM1 с отображением.
Начиная с: base-4.18.0.0
foldlMapM1 :: (Foldable1 t, Monad m) => (a -> m b) -> (b -> a -> m b) -> t a -> m b Исходный код
Вариант foldlM1 с отображением.
Начиная с: base-4.18.0.0
maximumBy :: Foldable1 t => (a -> a -> Ordering) -> t a -> a Исходный код
Наибольший элемент непустой структуры согласно заданной функции сравнения. При равенстве используется порядок элементов в структуре: если наибольших элементов несколько, выбирается самый правый из них.
Начиная с: base-4.18.0.0
minimumBy :: Foldable1 t => (a -> a -> Ordering) -> t a -> a Исходный код
Наименьший элемент непустой структуры согласно заданной функции сравнения. При равенстве используется порядок элементов в структуре: если наименьших элементов несколько, выбирается самый левый из них.
Начиная с: base-4.18.0.0
© 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-Foldable1.html