Community
Modules 14

Data.Bifunctor.Biap

provisional

newtype Biap bi a b

Pointwise lifting of a class over two arguments, using Biapplicative.

Classes that can be lifted include Monoid, Num and Bounded. Each method of those classes can be defined as lifting themselves over each argument of Biapplicative.

mempty        = bipure mempty          mempty
minBound      = bipure minBound        minBound
maxBound      = bipure maxBound        maxBound
fromInteger n = bipure (fromInteger n) (fromInteger n)

negate = bimap negate negate

(+)  = biliftA2 (+)  (+)
(<>) = biliftA2 (<>) (<>)

Biap is to Biapplicative as Ap is to Applicative.

Biap can be used with DerivingVia to derive a numeric instance for pairs:

newtype Numpair a = Np (a, a)
 deriving (S.Semigroup, Monoid, Num, Bounded)
 via Biap (,) a a

Biap :: bi a b -> Biap bi a b

Instances

27
  • instance (Eq bi, Eq a, Eq b) => Eq (Biap bi a b)
  • instance (Ord bi, Ord a, Ord b) => Ord (Biap bi a b)
  • instance (Show bi, Show a, Show b) => Show (Biap bi a b)
  • instance (Read bi, Read a, Read b) => Read (Biap bi a b)
  • instance (Enum bi, Enum a, Enum b) => Enum (Biap bi a b)
  • instance (Functor bi, Functor a, Functor b) => Functor (Biap bi a b)
  • instance (Foldable bi, Foldable a, Foldable b) => Foldable (Biap bi a b)
  • instance (Traversable bi, Traversable a, Traversable b) => Traversable (Biap bi a b)
  • instance (Alternative bi, Alternative a, Alternative b) => Alternative (Biap bi a b)
  • instance (Applicative bi, Applicative a, Applicative b) => Applicative (Biap bi a b)
  • instance (Generic bi, Generic a, Generic b) => Generic (Biap bi a b)
  • instance (Generic1 bi, Generic1 a, Generic1 b) => Generic1 (Biap bi a b)
  • instance (Monad bi, Monad a, Monad b) => Monad (Biap bi a b)
  • instance (MonadFail bi, MonadFail a, MonadFail b) => MonadFail (Biap bi a b)
  • instance (MonadPlus bi, MonadPlus a, MonadPlus b) => MonadPlus (Biap bi a b)
  • instance (Eq1 bi, Eq1 a, Eq1 b) => Eq1 (Biap bi a b)
  • instance (Ord1 bi, Ord1 a, Ord1 b) => Ord1 (Biap bi a b)
  • instance (Bifunctor bi, Bifunctor a, Bifunctor b) => Bifunctor (Biap bi a b)
  • instance (Biapplicative bi, Biapplicative a, Biapplicative b) => Biapplicative (Biap bi a b)
  • instance (Bifoldable bi, Bifoldable a, Bifoldable b) => Bifoldable (Biap bi a b)
  • instance (Eq2 bi, Eq2 a, Eq2 b) => Eq2 (Biap bi a b)
  • instance (Ord2 bi, Ord2 a, Ord2 b) => Ord2 (Biap bi a b)
  • instance Bitraversable bi => Bitraversable (Biap bi)
  • instance (Biapplicative bi, S.Semigroup a, S.Semigroup b) => S.Semigroup (Biap bi a b)
  • instance (Biapplicative bi, Monoid a, Monoid b) => Monoid (Biap bi a b)
  • instance (Biapplicative bi, Bounded a, Bounded b) => Bounded (Biap bi a b)
  • instance (Biapplicative bi, Num a, Num b) => Num (Biap bi a b)
Maintainer
Edward Kmett <ekmett@gmail.com>
Portability
portable
Copyright
(C) 2008-2016 Edward Kmett
License
BSD-style (see the file LICENSE)
Build record and source files

Community contribution. The service has not verified this documentation. The generator reported 2 diagnostics.

Target: Linux on x86-64. Some inferred types and resolved links are not available.

Generator: aihc-haddock-aa6debbd-web-3

Metadata snapshot: 09b82df928e064b0f451e3d0573302709a7badfc69fe1ca8110c8d45f2c2865f

Open the dependency plan · Download the documentation model

Import a package

Enter a package name and an exact version from Hackage. The site contains imported versions only.