Quoth "Sebastian Sylvan" <[EMAIL PROTECTED]>:
| On 7/27/06, mvanier <[EMAIL PROTECTED]> wrote:
| > As opposed to what?
|
| For example case-of, guards (in combination with let or where), or
| just a function:
|
| if :: Bool -> a -> a -> a
| if True t _ = t
| if False _ e = e
|
| -- example usage
| myAbs x = if (x < 0) (negate x) x

That looks to me like a different way to spell if then else, but maybe
that's the answer to the question - conceptually, for every "then" there
really is an "else", however you spell it, and only in a procedural language
does it make any sense to leave it implicit.  The exception that proves the
rule is "else return ()" -, e.g.,

if_ :: Bool -> IO () -> IO ()
if_ True f = f
if_ False _ = return ()

main = do
        args <- getArgs
        if_ (length args > 0)
                (print args)

Strictly speaking that generalizes to any functional context where a generic
value can be assigned to the else clause, but there don't tend to be that
many other such contexts.  Does that answer the question?

        Donn Cave, [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to