>| while :: IO Bool -> IO () -> IO ()
>|
>| while test action = do res <- test
>|                         if res  then do action
>|                                         while test action
>|                                 else return ()
>
>Haskell uses "layout" to reduce the need for parentheses.  For your code to
>parse, "if" should align with "res" vertically, as in:
>
> ... = do res <- test
>          if res ...

The "layout" rules drive me nuts. You might prefer using parentheses and 
semicolons, as I do:

-- (not tested)
while :: IO Bool -> IO () -> IO ();
while test action = do 
     {
     res <- test;
     if res
      then do
          {
          action;
          while test action;
          }
      else return ();
     };
--

...and then you can put the whitespace wherever you want.


-- 
Ashley Yakeley, Seattle WA


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

Reply via email to