In this chat server implementation http://www.haskell.org/haskellwiki/Implement_a_chat_serverforkIO is used with fix as in:
reader <- forkIO $ fix $ \loop -> do (nr', line) <- readChan chan' when (nr /= nr') $ hPutStrLn hdl line loop