[Haskell-cafe] Re: Haskell code for this example of flow control

Maurício briqueabraque at yahoo.com
Thu Feb 2 10:57:16 EST 2006


Donald Bruce Stewart wrote:
> briqueabraque:
> 
>>  Hi,
>>
>>  I would like to know what options I have in Haskell to do something 
>>similar to this C++ code:
>>
>>double a = 1000;
>>while (a>1) a/=2;
>>
>>  I'm able to do that with lists, but I would like to know how to do 
>>that with monads and variables with state.
> 
> 
> You'll get good code using a normal recusive loop:
> 
>     main = print (loop 1000)
>         where
>             loop a | a <= 1    = a 
>                    | otherwise = loop (a/2)
> 
> All such control structures may be implemented using recursion.
> 
> -- Don

   I understand those examples, but I really would like to know how to 
do that with monads. I would like to ask the same question, but now with 
this code:

double a = 1000;
double b = 0;
while (a != b) {
     a /= 2;
     cout << a; // Prints a
     cin << b; // User gives a number, stored in b
};

   Best,
   Maurício




More information about the Haskell-Cafe mailing list