Spec-Zone.ru › Haskell 7

Data.Bifunctor

Copyright (C) 2008-2014 Edward Kmett,
License BSD-style (see the file LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability portable
Safe Haskell Safe
Language Haskell2010

Description

Since: 4.8.0.0

class Bifunctor p where Source

Formally, the class Bifunctor represents a bifunctor from Hask -> Hask.

Intuitively it is a bifunctor where both the first and second arguments are covariant.

You can define a Bifunctor by either defining bimap or by defining both first and second.

If you supply bimap, you should ensure that:

bimap id id ≡ id

If you supply first and second, ensure:

first id ≡ id
second id ≡ id

If you supply both, you should also ensure:

bimap f g ≡ first f . second g

These ensure by parametricity:

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

Since: 4.8.0.0

Minimal complete definition

bimap | first, second

Methods

bimap :: (a -> b) -> (c -> d) -> p a c -> p b d Source

Map over both arguments at the same time.

bimap f g ≡ first f . second g

first :: (a -> b) -> p a c -> p b c Source

Map covariantly over the first argument.

first f ≡ bimap f id

second :: (b -> c) -> p a b -> p a c Source

Map covariantly over the second argument.

second ≡ bimap id

Instances

Bifunctor Either
Bifunctor (,)
Bifunctor Const
Bifunctor ((,,) x1)
Bifunctor ((,,,) x1 x2)
Bifunctor ((,,,,) x1 x2 x3)
Bifunctor ((,,,,,) x1 x2 x3 x4)
Bifunctor ((,,,,,,) x1 x2 x3 x4 x5)

© 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