Data.Bifunctor
| Авторские права | (C) 2008-2014 Edward Kmett |
|---|---|
| Лицензия | BSD-стиль (см. файл LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимый |
| Safe Haskell | Safe |
| Язык | Haskell2010 |
Описание
С момента: base-4.8.0.0
class Bifunctor p where Исходный код
Бифунктор — это конструктор типа, который принимает два аргумента типа и является функтором в обоих аргументах. То есть, в отличие от Functor, конструктор типа, такой как Either, не требует частичного применения для экземпляра Bifunctor, и методы в этом классе позволяют применять функции к отображению над Left значением или Right значением, или к обоим одновременно.
Формально, класс Bifunctor представляет бифунктор из Hask -> Hask.
Интуитивно это бифунктор, где и первый, и второй аргументы являются ковариантными.
Вы можете определить Bifunctor, определив bimap или определив как first, так и second.
Если вы предоставите bimap, вы должны убедиться, что:
bimap id id ≡ id
Если вы предоставите first и second, убедитесь в следующем:
first id ≡ id second id ≡ id
Если вы предоставите оба, вы также должны убедиться, что:
bimap f g ≡ first f . second g
Это гарантируется параметричностью:
bimap (f . g) (h . i) ≡ bimap f h . bimap g i first (f . g) ≡ first f . first g second (f . g) ≡ second f . second g
С момента: base-4.8.0.0
Методы
bimap :: (a -> b) -> (c -> d) -> p a c -> p b d Исходный код
Применить отображение к обоим аргументам одновременно.
bimap f g ≡ first f . second g
Примеры
>>> bimap toUpper (+1) ('j', 3)
('J',4)
>>> bimap toUpper (+1) (Left 'j') Left 'J'
>>> bimap toUpper (+1) (Right 3) Right 4
first :: (a -> b) -> p a c -> p b c Исходный код
Применить отображение ковариантно к первому аргументу.
first f ≡ bimap f id
Примеры
>>> first toUpper ('j', 3)
('J',3)
>>> first toUpper (Left 'j') Left 'J'
second :: (b -> c) -> p a b -> p a c Исходный код
Применить отображение ковариантно ко второму аргументу.
second ≡ bimap id
Примеры
>>> second (+1) ('j', 3)
('j',4)
>>> second (+1) (Right 3) Right 4
Экземпляры
| Bifunctor Either | С версии: base-4.8.0.0 |
| Bifunctor (,) | С версии: base-4.8.0.0 |
| Bifunctor Arg | С версии: base-4.9.0.0 |
| Bifunctor ((,,) x1) | С версии: base-4.8.0.0 |
| Bifunctor (Const :: Type -> Type -> Type) | С версии: base-4.8.0.0 |
| Bifunctor (K1 i :: Type -> Type -> Type) | С версии: base-4.9.0.0 |
| Bifunctor ((,,,) x1 x2) | С версии: base-4.8.0.0 |
| Bifunctor ((,,,,) x1 x2 x3) | С версии: base-4.8.0.0 |
Определено в Data.Bifunctor Методыbimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, a, c) -> (x1, x2, x3, b, d) Исходный код first :: (a -> b) -> (x1, x2, x3, a, c) -> (x1, x2, x3, b, c) Исходный код second :: (b -> c) -> (x1, x2, x3, a, b) -> (x1, x2, x3, a, c) Исходный код | |
| Bifunctor ((,,,,,) x1 x2 x3 x4) | С момента: base-4.8.0.0 |
Определено в Data.Bifunctor Методыbimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, x4, a, c) -> (x1, x2, x3, x4, b, d) Исходный код first :: (a -> b) -> (x1, x2, x3, x4, a, c) -> (x1, x2, x3, x4, b, c) Исходный код second :: (b -> c) -> (x1, x2, x3, x4, a, b) -> (x1, x2, x3, x4, a, c) Исходный код | |
| Bifunctor ((,,,,,,) x1 x2 x3 x4 x5) | С момента: base-4.8.0.0 |
Определено в Data.Bifunctor Методыbimap :: (a -> b) -> (c -> d) -> (x1, x2, x3, x4, x5, a, c) -> (x1, x2, x3, x4, x5, b, d) Исходный код first :: (a -> b) -> (x1, x2, x3, x4, x5, a, c) -> (x1, x2, x3, x4, x5, b, c) Исходный код second :: (b -> c) -> (x1, x2, x3, x4, x5, a, b) -> (x1, x2, x3, x4, x5, a, c) Исходный код | |
© 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-Bifunctor.html