[Haskell] Simulating client server communication with recursive monads