This looks really cool!
Is there a reason why you have something like:
newGame ::= a game of Wump the Wumpus;
as opposed to: newGame is a game of Wump the Wumpus.