úΩNone&345INÏThis class lets a polymorphic function behave differently depending on the constraints of the polymorphic variable. For example, we can use it to write the following improved version of the "show" function: zifShow :: forall a. IfCxt (Show a) => a -> String ifShow = ifCxt (Proxy::Proxy (Show a)) show (const "<<unshowable>>")In ghci, we can run:ifShow (1 :: Int)"1"ifShow (id :: a -> a)"<<unshowable>>"The IfCxt.Examples module contains more examples."Derives all possible instances of IfCxt( for the given one parameter type class.None &3457>INWA version of "show" that can be called on any type. If the type is not an instance of Show, then  unshowable gets displayed.Like "cxtShow" above, but if a is not an instance of Show then we print out the type.WA version of "nub" that is maximally efficient for the given type. If we only have an Eq& constraint, then "cxtNub" takes time O(n^2), but if we also have an Ord+ constraint, then "cxtNub" only takes time  O(n*log n). If the type a does have an Ord7 constraint, then the order of the elements may change. gA version of "sum" that uses the numerically stable Kahan summation technique on floating point values.FThis function behaves differently depending on whether there exists a  instance or not.          ifcxt_9OxERqZZnB8AISFZFDDxZSIfCxtIfCxt.ExamplesifCxtmkIfCxtInstancesMagiccxtShowcxtShowTypeablecxtNubmagic $fIfCxtcxtcxtSum $fIfCxtOrd $fIfCxtShow