úÎ'À      experimentalconal@conal.net=A data type representation, in terms of standard data types.  Requires that  .  == . to representation from representation "Apply a binary function on a repr "Apply a binary function on a repr  experimentalconal@conal.net (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 -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'Laxer if-then-else, due to Luke Palmer Laxer variant of        !"#$% lub-0.1.5 Data.ReprData.LubData.Glb Data.LaxerHasReprreprunrepronRepronRepr2HasLublublubsflatLub parCommuteptimesHasGlbglbglbs1 glbBottomflatGlbcondLeitherLbaseGHC.Baseid unamb-0.2.4 Data.UnambunambdefinedPisLoutLoutRrepLubrepGlb Data.Eithereither