Safe Haskell | None |
---|---|

Language | Haskell2010 |

Defines two variants of `(,)`

with lifted instances for the standard type classes.

The `Functor`

, `Applicative`

and `Comonad`

instances are the standard instances. The
`Monad`

instances are not in base (but should argubly be there). All of these instances
are equivalent to `Writer`

in transformers.

`Applicative`

is used to lift `Monoid`

and the standard numeric classes.

The only difference between `Twain`

and `Couple`

is the handling of `Eq`

and `Ord`

:
`Twain`

compares only the second value, while `Couple`

compares both. Thus `Couple`

needs
an extra `Ord b`

constraint for all sub-classes of `Ord`

.

# Documentation

A variant of pair/writer with lifted instances for the numeric classes, using `Applicative`

.

Monoid b => Monad (Twain b) | |

Functor (Twain b) | |

Monoid b => Applicative (Twain b) | |

Foldable (Twain b) | |

Traversable (Twain b) | |

Comonad (Twain b) | |

(Monoid b, Bounded a) => Bounded (Twain b a) | |

(Monoid b, Enum a) => Enum (Twain b a) | |

Eq a => Eq (Twain b a) | |

(Monoid b, Floating a) => Floating (Twain b a) | |

(Monoid b, Fractional a) => Fractional (Twain b a) | |

(Monoid b, Real a, Enum a, Integral a) => Integral (Twain b a) | |

(Monoid b, Num a) => Num (Twain b a) | |

Ord a => Ord (Twain b a) | |

(Monoid b, Real a) => Real (Twain b a) | |

(Monoid b, RealFrac a) => RealFrac (Twain b a) | |

(Show b, Show a) => Show (Twain b a) | |

(Monoid b, Monoid a) => Monoid (Twain b a) | |

(Semigroup b, Semigroup a) => Semigroup (Twain b a) | |

Wrapped (Twain b a) | |

HasMeta a => HasMeta (Twain b a) | |

Typeable (* -> * -> *) Twain | |

Rewrapped (Twain c a) (Twain c b) | |

type Unwrapped (Twain b a) = (b, a) |

A variant of pair/writer with lifted instances for the numeric classes, using `Applicative`

.