On Thu, 2009-03-05 at 15:36 -0800, Daryoush Mehrtash wrote:
> In this chat server implementation
> http://www.haskell.org/haskellwiki/Implement_a_chat_server
> 
> forkIO is used with fix as in:
> 
> reader <- forkIO $ fix $ \loop -> do
> 
>         (nr', line) <- readChan chan'
>         when (nr /= nr') $ hPutStrLn hdl line
> 
>         loop
> 
> Do you have to use fix?  Or is there a way to write this with a "let"?

You can certainly use let:

  reader <- forkIO $ let loop = do
      (nr', line) <- readChan chan'
      when (nr /= nr') $ hPutStrLn hdl line
      loop
    in loop

But the version with fix is clearer (at least to people who have fix in
their vocabulary) and arguably better style.

jcc


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to