DA.Bifunctor
Documentation Index
Fetch the complete documentation index at: https://docs.canton.network/llms.txt Use this file to discover all available pages before exploring further.
DA.Bifunctor
Reference documentation for Daml module DA.Bifunctor.
DA.Bifunctor
Module Snapshot
Typeclasses
class Bifunctor p
A bifunctor is a type constructor that takes
two type arguments and is a functor in both arguments. That
is, unlike with Functor, a type constructor such as Either
does not need to be partially applied for a Bifunctor
instance, and the methods in this class permit mapping
functions over the Left value or the Right value,
or both at the same time.
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 identity identity` ≡ `identity`
If you supply first and second, ensure:
first identity ≡ identity
second identity ≡ identity
If you supply both, you should also ensure:
bimap f g ≡ first f . second g
By parametricity, these will ensure that:
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
Methods:
-
bimap : (a -> b) -> (c -> d) -> p a c -> p b dMap over both arguments at the same time.bimap f g ≡ first f . second gExamples:
>>> bimap not (+1) (True, 3) (False,4) >>> bimap not (+1) (Left True) Left False >>> bimap not (+1) (Right 3) Right 4 -
first : (a -> b) -> p a c -> p b cMap covariantly over the first argument.first f ≡ bimap f identityExamples:
>>> first not (True, 3) (False,3) >>> first not (Left True : Either Bool Int) Left False -
second : (b -> c) -> p a b -> p a cMap covariantly over the second argument.second ≡ bimap identityExamples:
>>> second (+1) (True, 3) (True,4) >>> second (+1) (Right 3 : Either Bool Int) Right 4
Instances:
instance Bifunctor Eitherinstance Bifunctor ()instance Bifunctor x1instance Bifunctor (x1, x2)instance Bifunctor (x1, x2, x3)instance Bifunctor (x1, x2, x3, x4)instance Bifunctor (x1, x2, x3, x4, x5)
Mirrored from Canton Network official documentation (CC-BY-4.0) by CC Privacy Club for learning purposes.