úÎ3Š1‡      Safe-InferedA simple conditional function.  with the ! argument at the end (infixr 1). CA catamorphism (aka fold) for the Bool type. This is analogous to  , , and . The first argument is N the false case, the second argument is the true case, and the last argument  is the predicate value. JLisp-style conditionals. If no conditions match, then a runtime exception  is thrown. Here's a trivial example:  % signum x = cond [(x > 0 , 1 )  ,(x < 0 , -1) $ ,(otherwise , 0 )] )Lisp-style conditionals generalized over . If no conditions  match, then the result is . This is a safer variant of . Here'#s a highly contrived example using :   5 signum x = fromMaybe 0 . condPlus $ [(x > 0, 1 ) + ,(x < 0, -1)] !Alternatively, you could use the  operator from Hoare' s ternary ' conditional choice operator, like so:   signum x = 0 <| condPlus [(x > 0, 1 )  ,(x < 0, -1)] 4Conditional composition. If the predicate is False,  is returned M instead of the second argument. This function, for example, can be used to 5 conditionally add functions to a composition chain. <Composes a predicate function and 2 functions into a single L function. The first function is called when the predicate yields True, the ) second when the predicate yields False. Note that after importing Control.Monad.Instances,  becomes a  special case of .  lifted to  . Unlike   , this is O short-circuiting in the monad, such that only the predicate action and one of . the remaining argument actions are executed. Lifted boolean or. Unlike  (%), This function is short-circuiting % in the monad. Fixity is the same as  (infixr 2). Lifted boolean and. Unlike  (), this function is 6 short-circuiting in the monad. Fixity is the same as  (infxr 3). Lifted boolean negation.  lifted to .. If no conditions match, a runtime exception  is thrown.  lifted to . If no conditions match, then   is returned.  a variant of   with a monadic predicate.  a variant of ! with a monadic predicate.  a variant of " with a monadic predicate. 1Conditional monoid operator. If the predicate is # , the second  argument is replaced with $%. The fixity of this operator is one  level higher than . GIt can also be used to chain multiple predicates together, like this: + even (length ls) ?<> not (null ls) ?<> ls EAn operator that allows you to write C-style ternary conditionals of  the form:   p ? t ?? f BNote that parentheses are required in order to chain sequences of 7 conditionals together. This is probably a good thing. Cright bracket of the conditional choice operator. If the predicate  is # , returns %, otherwise it returns & the right-hand  argument. Gleft bracket of the conditional choice operator. This is equivalent to   Unicode rebinding of . Unicode rebinding of .      '      !"#$"%&"%'"()"#*"%+"%,-.-/"%0"%1"%2 3"45"6"78cond-0.1 Control.Cond Data.Maybemaybe Data.Eithereither fromMaybeControl.Monoid<>if'??boolcondcondPlus?.selectifM<||><&&>notMcondM condPlusMwhenMunlessMguardM?<>?|><|⊲⊳ghc-prim GHC.TypesBoolbaseGHC.Basefoldr Control.Monad MonadPlusmzeroControl.CategoryidMonadliftM3liftM2 GHC.Classes||&&whenunlessguardFalse Data.MonoidmemptyNothingJust