contravariant-1.3.2: Contravariant functors

Data.Functor.Contravariant.Generic

Description

Synopsis

# Documentation

class (Generic a, GDeciding q (Rep a)) => Deciding q a where Source

This provides machinery for deconstructing an arbitrary `Generic` instance using a `Decidable` `Contravariant` functor.

Examples:

```gcompare :: `Deciding` `Ord` a => a -> a -> `Ordering`
gcompare = `getComparison` \$ `deciding` (Proxy :: Proxy `Ord`) (`Comparison` `compare`)
```
```geq :: `Deciding` `Eq` a => a -> a -> `Bool`
geq = `getEquivalence` \$ `deciding` (Proxy :: Proxy `Eq`) (`Equivalence` (`==`))
```

Methods

deciding :: Decidable f => p q -> (forall b. q b => f b) -> f a Source

Instances

 (Generic a, GDeciding * q (Rep a)) => Deciding q a

class (Generic1 t, GDeciding1 q (Rep1 t)) => Deciding1 q t where Source

This provides machinery for deconstructing an arbitrary `Generic1` instance using a `Decidable` `Contravariant` functor.

Examples:

```gcompare1 :: `Deciding1` `Ord` f => (a -> a -> `Ordering`) -> f a -> f a -> `Ordering`
gcompare1 f = `getComparison` \$ `deciding1` (Proxy :: Proxy `Ord`) (`Comparison` compare) (`Comparison` f)
```
```geq1 :: `Deciding1` `Eq` f => (a -> a -> `Bool`) -> f a -> f a -> `Bool`
geq1 f = `getEquivalence` \$ `deciding1` (Proxy :: Proxy `Eq`) (`Equivalence` (`==`)) (`Equivalence` f)
```

Methods

deciding1 :: Decidable f => p q -> (forall b. q b => f b) -> f a -> f (t a) Source

Instances

 (Generic1 t, GDeciding1 q (Rep1 t)) => Deciding1 q t