Spec-Zone.ru › Haskell 8

Data.Bifoldable

Авторские права (C) 2011-2016 Edward Kmett
Лицензия BSD-стиль (см. файл LICENSE)
Поддерживающий libraries@haskell.org
Устойчивость предварительная
Переносимость переносимая
Безопасный Haskell Безопасный
Язык Haskell2010

Описание

С момента: base-4.10.0.0

class Bifoldable p where Исходный код

Bifoldable определяет структуры, допускающие сгибание, с двумя различными типами элементов (в отличие от Foldable, имеющей один тип элемента). Типичные примеры — Either и (,):

instance Bifoldable Either where
  bifoldMap f _ (Left  a) = f a
  bifoldMap _ g (Right b) = g b

instance Bifoldable (,) where
  bifoldr f g z (a, b) = f a (g b z)

Минимальное Bifoldable определение состоит либо из bifoldMap либо из bifoldr. При определении большего набора необходимо убедиться, что выполняются следующие тождества:

bifold ≡ bifoldMap id id
bifoldMap f g ≡ bifoldr (mappend . f) (mappend . g) mempty
bifoldr f g z t ≡ appEndo (bifoldMap (Endo . f) (Endo . g) t) z

Если тип также является Bifunctor экземпляром, он должен удовлетворять:

bifoldMap f g ≡ bifold . bimap f g

что подразумевает

bifoldMap f g . bimap h i ≡ bifoldMap (f . h) (g . i)

С момента: base-4.10.0.0

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

bifoldr | bifoldMap

Методы

bifold :: Monoid m => p m m -> m Исходный код

Объединяет элементы структуры, используя моноид.

bifold ≡ bifoldMap id id

С момента: base-4.10.0.0

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> p a b -> m Исходный код

Объединяет элементы структуры, задавая способы сопоставления их с общим моноидом.

bifoldMap f g
     ≡ bifoldr (mappend . f) (mappend . g) mempty

С момента: base-4.10.0.0

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

Объединяет элементы структуры в правоассоциативном порядке. Учитывая гипотетическую функцию toEitherList :: p a b -> [Either a b], генерирующую список всех элементов структуры в порядке, выполнялось бы следующее:

bifoldr f g z ≡ foldr (either f g) z . toEitherList

С момента: base-4.10.0.0

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

Объединяет элементы структуры в левоассоциативном порядке. Учитывая гипотетическую функцию toEitherList :: p a b -> [Either a b], генерирующую список всех элементов структуры в порядке, выполнялось бы следующее:

bifoldl f g z
     ≡ foldl (acc -> either (f acc) (g acc)) z . toEitherList

Обратите внимание, что если вам нужна эффективная левая свертка, вы, вероятно, захотите использовать bifoldl' вместо bifoldl. Причина в том, что последняя не принуждает "внутренние" результаты, что приводит к цепочке отложенных вычислений, которая затем должна быть вычислена снаружи-внутрь.

С момента: base-4.10.0.0

Экземпляры
Подробности о реализациях
Bifoldable Either

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => Either m m -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Either a b -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Either a b -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Either a b -> c Source

Bifoldable (,)

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => (m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (a, b) -> c Source

Bifoldable Arg

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => Arg m m -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Arg a b -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Arg a b -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Arg a b -> c Source

Bifoldable ((,,) x)

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => (x, m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (x, a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (x, a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (x, a, b) -> c Source

Bifoldable (Const :: Type -> Type -> Type)

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => Const m m -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Const a b -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Const a b -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Const a b -> c Source

Bifoldable (K1 i :: Type -> Type -> Type)

С версии: base-4.10.0.0

Подробности о реализации

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

Методы

bifold :: Monoid m => K1 i m m -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> K1 i a b -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> K1 i a b -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> K1 i a b -> c Source

Bifoldable ((,,,) x y)

Since: base-4.10.0.0

Instance details

Defined in Data.Bifoldable

Методы

bifold :: Monoid m => (x, y, m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (x, y, a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (x, y, a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (x, y, a, b) -> c Source

Bifoldable ((,,,,) x y z)

Since: base-4.10.0.0

Instance details

Defined in Data.Bifoldable

Методы

bifold :: Monoid m => (x, y, z, m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (x, y, z, a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (x, y, z, a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (x, y, z, a, b) -> c Source

Bifoldable ((,,,,,) x y z w)

Since: base-4.10.0.0

Instance details

Defined in Data.Bifoldable

Методы

bifold :: Monoid m => (x, y, z, w, m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (x, y, z, w, a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (x, y, z, w, a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (x, y, z, w, a, b) -> c Source

Bifoldable ((,,,,,,) x y z w v)

Since: base-4.10.0.0

Instance details

Defined in Data.Bifoldable

Методы

bifold :: Monoid m => (x, y, z, w, v, m, m) -> m Source

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> (x, y, z, w, v, a, b) -> m Source

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> (x, y, z, w, v, a, b) -> c Source

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> (x, y, z, w, v, a, b) -> c Source

bifoldr' :: Bifoldable t => (a -> c -> c) -> (b -> c -> c) -> c -> t a b -> c Source

Как bifoldr, но строгое в результате функций редукции на каждом шаге.

Since: base-4.10.0.0

bifoldr1 :: Bifoldable t => (a -> a -> a) -> t a a -> a Source

Вариант bifoldr, который не имеет базового случая и, таким образом, может применяться только к непустым структурам.

Since: base-4.10.0.0

bifoldrM :: (Bifoldable t, Monad m) => (a -> c -> m c) -> (b -> c -> m c) -> c -> t a b -> m c Source

Правоассоциативная монадическая бисборка над структурой.

Since: base-4.10.0.0

bifoldl' :: Bifoldable t => (a -> b -> a) -> (a -> c -> a) -> a -> t b c -> a Source

Как bifoldl, но строгое в результате функций редукции на каждом шаге.

Это гарантирует, что каждый шаг бисборки принуждается к слабой головной нормальной форме перед применением, избегая накопления замыканий, которые в противном случае произошли бы. Это часто то, что вы хотите строго свести конечную структуру к одному монолитному результату (например, bilength).

Since: base-4.10.0.0

bifoldl1 :: Bifoldable t => (a -> a -> a) -> t a a -> a Source

Вариант bifoldl, который не имеет базового случая и, таким образом, может применяться только к непустым структурам.

Since: base-4.10.0.0

bifoldlM :: (Bifoldable t, Monad m) => (a -> b -> m a) -> (a -> c -> m a) -> a -> t b c -> m a Source

Левоассоциативная монадическая бисборка над структурой.

Since: base-4.10.0.0

bitraverse_ :: (Bifoldable t, Applicative f) => (a -> f c) -> (b -> f d) -> t a b -> f () Source

Сопоставить каждый элемент структуры, используя одно из двух действий, вычислить эти действия слева направо и игнорировать результаты. За версией, которая не игнорирует результаты, см. bitraverse.

Since: base-4.10.0.0

bifor_ :: (Bifoldable t, Applicative f) => t a b -> (a -> f c) -> (b -> f d) -> f () Source

Как bitraverse_, но со структурой в качестве основного аргумента. Для версии, которая не игнорирует результаты, см. bifor.

>>> > bifor_ ('a', "bc") print (print . reverse)
'a'
"cb"

С момента: base-4.10.0.0

bimapM_ :: (Bifoldable t, Applicative f) => (a -> f c) -> (b -> f d) -> t a b -> f () Source

Псевдоним для bitraverse_.

С момента: base-4.10.0.0

biforM_ :: (Bifoldable t, Applicative f) => t a b -> (a -> f c) -> (b -> f d) -> f () Source

Псевдоним для bifor_.

С момента: base-4.10.0.0

bimsum :: (Bifoldable t, Alternative f) => t (f a) (f a) -> f a Source

Псевдоним для biasum.

С момента: base-4.10.0.0

bisequenceA_ :: (Bifoldable t, Applicative f) => t (f a) (f b) -> f () Source

Псевдоним для bisequence_.

С момента: base-4.10.0.0

bisequence_ :: (Bifoldable t, Applicative f) => t (f a) (f b) -> f () Source

Выполняет каждое действие в структуре слева направо и игнорирует результаты. Для версии, которая не игнорирует результаты, см. bisequence.

С момента: base-4.10.0.0

biasum :: (Bifoldable t, Alternative f) => t (f a) (f a) -> f a Source

Сумма набора действий, обобщающая biconcat.

С момента: base-4.10.0.0

biList :: Bifoldable t => t a a -> [a] Source

Собирает список элементов структуры слева направо.

С момента: base-4.10.0.0

binull :: Bifoldable t => t a b -> Bool Source

Проверяет, пуста ли структура.

С момента: base-4.10.0.0

bilength :: Bifoldable t => t a b -> Int Source

Возвращает размер/длину конечной структуры как Int.

С момента: base-4.10.0.0

bielem :: (Bifoldable t, Eq a) => a -> t a a -> Bool Source

Является ли элемент присутствующим в структуре?

С момента: base-4.10.0.0

bimaximum :: forall t a. (Bifoldable t, Ord a) => t a a -> a Source

Наибольший элемент непустой структуры.

С момента: base-4.10.0.0

biminimum :: forall t a. (Bifoldable t, Ord a) => t a a -> a Source

Наименьший элемент непустой структуры.

С момента: base-4.10.0.0

bisum :: (Bifoldable t, Num a) => t a a -> a Source

Функция bisum вычисляет сумму чисел в структуре.

С момента: base-4.10.0.0

biproduct :: (Bifoldable t, Num a) => t a a -> a Source

Функция biproduct вычисляет произведение чисел в структуре.

С момента: base-4.10.0.0

biconcat :: Bifoldable t => t [a] [a] -> [a] Source

Преобразует структуру списков в конкатенацию этих списков.

С момента: base-4.10.0.0

biconcatMap :: Bifoldable t => (a -> [c]) -> (b -> [c]) -> t a b -> [c] Source

Если задан способ отображения элементов структуры в списки, вычисляет конкатенацию всех таких списков в порядке следования.

С момента: base-4.10.0.0

biand :: Bifoldable t => t Bool Bool -> Bool Source

biand возвращает конъюнкцию контейнера булевых значений. Для получения True, контейнер должен быть конечным; False, однако, результаты из False значения, находящегося на конечном расстоянии слева.

С момента: base-4.10.0.0

bior :: Bifoldable t => t Bool Bool -> Bool Source

bior возвращает дизъюнкцию контейнера булевых значений. Для получения False, контейнер должен быть конечным; True, однако, результаты из True значения, находящегося на конечном расстоянии слева.

С момента: base-4.10.0.0

biany :: Bifoldable t => (a -> Bool) -> (b -> Bool) -> t a b -> Bool Source

Определяет, удовлетворяет ли любой элемент структуры соответствующему аргументу предиката.

С момента: base-4.10.0.0

biall :: Bifoldable t => (a -> Bool) -> (b -> Bool) -> t a b -> Bool Source

Определяет, удовлетворяют ли все элементы структуры соответствующему аргументу предиката.

С момента: base-4.10.0.0

bimaximumBy :: Bifoldable t => (a -> a -> Ordering) -> t a a -> a Source

Наибольший элемент непустой структуры относительно заданной функции сравнения.

Since: base-4.10.0.0

biminimumBy :: Bifoldable t => (a -> a -> Ordering) -> t a a -> a Source

Наименьший элемент непустой структуры относительно заданной функции сравнения.

Since: base-4.10.0.0

binotElem :: (Bifoldable t, Eq a) => a -> t a a -> Bool Source

binotElem — это отрицание bielem.

Since: base-4.10.0.0

bifind :: Bifoldable t => (a -> Bool) -> t a a -> Maybe a Source

Функция bifind принимает предикат и структуру и возвращает самый левый элемент структуры, удовлетворяющий предикату, или Nothing, если такого элемента нет.

Since: base-4.10.0.0

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-Bifoldable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API