Spec-Zone.ru › Haskell 7

Data.Bifunctor

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

Описание

С тех пор как: 4.8.0.0

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

Формально, класс 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

С тех пор как: 4.8.0.0

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

bimap | first, second

Методы

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

Применить отображение к обоим аргументам одновременно.

bimap f g ≡ first f . second g

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

Применить отображение ковариантно к первому аргументу.

first f ≡ bimap f id

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

Применить отображение ковариантно ко второму аргументу.

second ≡ bimap id

Примеры

Bifunctor Either
Bifunctor (,)
Bifunctor Const
Bifunctor ((,,) x1)

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

Spec-Zone.ru

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