An exercise in insanity (Or, a tile based game engine for Haskell)