úÎÖk      experimentalconal@conal.net Safe-Infered=A data type representation, in terms of standard data types.  Requires that  .  == . "Apply a binary function on a repr "Apply a binary function on a repr to representation from representation  experimentalconal@conal.net Safe-Infered(Types that support information merging () DLeast upper information bound. Combines information available from E each argument. The arguments must be consistent, i.e., must have a  common upper bound. n-ary . Defaults to foldr lub undefined A " for flat domains. Equivalent to . Handy for defining   instances, e.g.,  / instance HasLub Integer where lub = flatLub  CTurn a binary commutative operation into that tries both orders in  parallel, 5-merging the results. Useful when there are special  cases that don'%t require evaluating both arguments. +Similar to parCommute from Unamb, but uses  instead of . FMultiplication optimized for either argument being zero or one, where  the other might be expensive/ delayed.   !    ! experimentalconal@conal.net Safe-Infered -Types that support information intersection ( ) DGreatest lower information bound. Intersects information available  from each argument. n-ary   for n > 0. Defaults to  foldr1 glb . Unlike lub, we  have no unit for  .  Bottom for a  . In the form of error " glb: bottom (<reason>)",  though not really an error.  8 on flat types with equality. Gives bottom for unequal  arguments.  "#$%&'()*+,-    "#$%&'()*+,- experimentalconal@conal.net Safe-Infered'Laxer if-then-else, due to Luke Palmer Laxer variant of . /      !"#$%&'()*+,-./0123456789 lub-0.1.7 Data.ReprData.LubData.Glb Data.LaxerHasReprreprunrepronRepronRepr2HasLublublubsflatLub parCommuteptimesHasGlbglbglbs1 glbBottomflatGlbcondLeitherLbaseGHC.Baseid$fHasRepr[]Either$fHasReprMaybeEither unamb-0.2.5 Data.Unambunamb $fHasLub[] $fHasLubMaybe$fHasLubEither $fHasLub(->) $fHasLub(,)$fHasLubDouble $fHasLubFloat$fHasLubInteger $fHasLubInt $fHasLubChar $fHasLubBool $fHasLub() $fHasGlb[] $fHasGlbMaybe$fHasGlbEither $fHasGlb(->) $fHasGlb(,)$fHasGlbDouble $fHasGlbFloat$fHasGlbInteger $fHasGlbInt $fHasGlbChar $fHasGlbBool $fHasGlb() Data.Eithereither