Antoine Latter wrote:
> On Sat, Jun 20, 2009 at 1:05 PM, Deniz Dogan<[email protected]> wrote:
>> I (too) often find myself writing code such as this:
>>
>> if something
>>  then putStrLn "howdy there!"
>>  else if somethingElse
>>          then putStrLn "howdy ho!"
>>          else ...
>>
>> I recall reading some tutorial about how you can use the Maybe monad
>> if your code starts looking like this, but as you can see, that
>> doesn't really apply here. "something" and "somethingElse" are simply
>> booleans and each of them have different actions to take if either of
>> them is True.
>>
>> So how do I make code like this prettier?
> 
> I'm not entirely sure if this is haskell'98, but GHC seems to support
> this sort of layout:
> 
> main = do
>   <some computation>
> 
>   if something then someOtherComputation else do
> 
>   <continue at the same indentation>
> <<<<<

IMHO, this is ugly and counterintuitive; I like having a single "point
of exit" (to use an imperative programming term) of a function. Your
suggestion is equivalent to

someComputation;
if something then begin
        someOtherComputation;
        exit;
end;
more;

in, say, Pascal. This obscures the fact that "more;" is sometimes/often
not executed. (You could argue the same about exceptions, but they are a
necessary evil ;-).

Regards,

-- 
Jochem Berndsen | [email protected]
GPG: 0xE6FABFAB
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to