import Control.Concurrent
import Control.Monad.Fix

data Client = Client
        { clientLock :: MVar ()
        }

main = do
        mvar <- newMVar ()

        client <- mfix $ \client -> do
                _ <- forkIO (mainLoop client)
                threadDelay 200000
                return (Client mvar)
        return ()

mainLoop client = withMVar (clientLock client) (\_ -> return ())
