úÎ!)õ%qK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJNone &',.>UVXf%boringThe « type is very exciting, because if somebody ever gives you a value belonging to it, you know that you are already dead and in Heaven and that anything you want is yours.Similarly as there are many  sums, there are many  products, so we don't have  instances for tuples.boring' types which contains one thing, also Ò. 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:  == x Note: This is different class from Default. Default gives you some value, Boring gives you an unique value.3Also note, that we cannot have instances for e.g. K , as both ( a,  b) => Either a b and ( a,  b) => Either a b would be valid instances.AAnother useful trick, is that you can rewrite computations with  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.boringIf  is uninhabited then any L! that holds only values of type  is holding no values.boringIf an index of M f is , f a is .boringIf an index of M f is , f is isomorphic to N. See also Settable class in lens.boring'There is a field for every type in the  . Very zen.  ::  s => Over p f s s a b -type Over p f s t a b = p a (f b) -> s -> f tboringWe can always retrieve a  value from any type.  ::  a => Lens' s a boringO, it's . boringP, it's . boringThis relies on the fact that a is  proposition in h-Prop sense.boringboringboringboringboringboringboringboringboringboringHeterogeneous type equality is  too. boringHomogeneous type equality is  too.!boringCoercibility is  too.9boring:boringIboringQ a = a + 1,  0 + 1 = 1.JboringCRecall regular expressions, kleene star of empty regexp is epsilon!   R      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOMPQRSTMUVWXYWXZM[\]#boring-0.1.3-L5FTzcfM2hbHz2jQOd6twW Data.BoringAbsurdabsurdBoringboringvacuous boringRep untainteddevoidunited boringYesabsurdNo $fBoringDec $fBoring:.: $fBoringRec1 $fBoringPar1 $fBoring:*: $fBoringM1 $fBoringK1 $fBoringU1 $fBoringSBinP $fBoringSBin $fBoringPos $fBoringPosP $fBoringRAVec$fBoringLEProof$fBoringLEProof0 $fBoringSBool $fBoringSNat $fBoringFin $fBoringVec $fBoringVec0 $fBoring:~~: $fBoring:~:$fBoringCoercion$fBoringStream$fBoring(,,,,) $fBoring(,,,) $fBoring(,,) $fBoring(,) $fBoringDict$fBoringProduct$fBoringCompose $fBoringK $fBoringI$fBoringIdentity$fBoringTagged $fBoringConst $fBoringProxy $fBoring-> $fBoring() $fAbsurd:.: $fAbsurdRec1 $fAbsurdPar1 $fAbsurd:+: $fAbsurdM1 $fAbsurdK1 $fAbsurdV1$fAbsurdNERAList $fAbsurdPos$fAbsurdLEProof$fAbsurdLEProof0 $fAbsurdFin $fAbsurdK $fAbsurdI$fAbsurdTagged $fAbsurdConst $fAbsurdSum$fAbsurdCompose$fAbsurdIdentity$fAbsurdStream$fAbsurdNonEmpty$fAbsurdEither $fAbsurdVoid $fBoringMaybe $fBoring[]base Data.EitherEitherGHC.BaseFunctor%adjunctions-4.4-3AEN6WyfMx2XgYp81zcUNData.Functor.Rep RepresentableData.Functor.IdentityIdentity dec-0.0.3-J3Of5Fns2FN1mALR1HZtLi Data.Type.DecYesNo GHC.MaybeMaybe