Data.Foldable1
| Авторские права | Edward Kmett Oleg Grenrus |
|---|---|
| Лицензия | BSD-3-Clause |
| Безопасный Haskell | Надёжный |
| Язык | 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 :: t a -> a Исходный код
Первый элемент непустой структуры.
>>> head (1 :| [2, 3, 4]) 1
С момента: base-4.18.0.0
last :: t a -> a Исходный код
Последний элемент непустой структуры.
>>> 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 Исходный код
Левоассоциативная свёртка структуры, но с жёстким применением оператора.
Это гарантирует, что каждый шаг свёртки приводится к слабой головной нормальной форме перед применением, избегая накопления заглушек, которые в противном случае могли бы возникнуть. Это часто требуется для жёсткого сведения конечной структуры к единственному жёсткому результату.
Для общей 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 => 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 :: Тип -> Тип) Исходный код | С момента: 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.12.1/docs/libraries/base-4.21.0.0-8e62/Data-Foldable1.html