Boring types which contains one thing, also boring. There is nothing interesting to be gained by comparing one element of the boring type with another, because there is nothing to learn about an element of the boring type by giving it any of your attention.
Boring Law:
boring == x
Note: This is different class from Default.
Default gives you some value,
Boring gives you an unique value.
Also note, that we cannot have instances for e.g.
Either, as both
(Boring a, Absurd b) => Either a b and
(Absurd a, Boring b) => Either a b would be valid instances.
Another useful trick, is that you can rewrite computations with
Boring results, for example foo :: Int -> (), if you are sure
that foo is total.
{-# RULES "less expensive" foo = boring #-}That's particularly useful with equality :~: proofs.
Methods
boring :: a
Instances28Boring, …
Boring ()Defined in boring-0.2.2 · Data.BoringAbsurd a => Boring (Maybe a)Defined in boring-0.2.2 · Data.BoringMaybe a = a + 1,0 + 1 = 1.Absurd a => Boring [a]Defined in boring-0.2.2 · Data.BoringRecall regular expressions, kleene star of empty regexp is epsilon!
Boring a => Boring (Identity a)Defined in boring-0.2.2 · Data.BoringBoring p => Boring (Par1 p)Defined in boring-0.2.2 · Data.BoringKnownChar n => Boring (SChar n)Defined in boring-0.2.2 · Data.BoringKnownSymbol n => Boring (SSymbol n)Defined in boring-0.2.2 · Data.BoringKnownNat n => Boring (SNat n)Defined in boring-0.2.2 · Data.BoringBoring (Proxy a)Defined in boring-0.2.2 · Data.BoringBoring (U1 p)Defined in boring-0.2.2 · Data.BoringBoring b => Boring (a -> b)Defined in boring-0.2.2 · Data.BoringTypeable a => Boring (TypeRep a)Defined in boring-0.2.2 · Data.Boring(Boring a, Boring b) => Boring (a, b)Defined in boring-0.2.2 · Data.BoringBoring (f p) => Boring (Rec1 f p)Defined in boring-0.2.2 · Data.BoringBoring a => Boring (Const a b)Defined in boring-0.2.2 · Data.BoringBoring b => Boring (Tagged a b)Defined in boring-0.2.2 · Data.BoringCoercible a b => Boring (Coercion a b)Defined in boring-0.2.2 · Data.BoringCoercibility is Boring too.
(Boring a, Boring b, Boring c) => Boring (a, b, c)Defined in boring-0.2.2 · Data.Boringa ~ b => Boring (a :~: b)Defined in boring-0.2.2 · Data.BoringHomogeneous type equality is Boring too.
Boring c => Boring (K1 i c p)Defined in boring-0.2.2 · Data.Boring(Boring (f a), Boring (g a)) => Boring (Product f g a)Defined in boring-0.2.2 · Data.Boring(Boring (f p), Boring (g p)) => Boring ((:*:) f g p)Defined in boring-0.2.2 · Data.Boring(Boring a, Boring b, Boring c, Boring d) => Boring (a, b, c, d)Defined in boring-0.2.2 · Data.Boringa ~ b => Boring (a :~~: b)Defined in boring-0.2.2 · Data.BoringHeterogeneous type equality is Boring too.
Boring (f (g a)) => Boring (Compose f g a)Defined in boring-0.2.2 · Data.BoringBoring (f (g p)) => Boring ((:.:) f g p)Defined in boring-0.2.2 · Data.BoringBoring (f p) => Boring (M1 i c f p)Defined in boring-0.2.2 · Data.Boring(Boring a, Boring b, Boring c, Boring d, Boring e) => Boring (a, b, c, d, e)Defined in boring-0.2.2 · Data.Boring