Using kleisli arrows somehow fixed huge space usage problem.  Beats me...
Ok, disregard last note.  Kleisli arrow didn't change anything.  Problem was lazy bytestring was not being garbage collected.  dcoutts_ on #haskell pointed me to the BS.copy function which helps with this.
Very large update.  Began to add some structure to the program using config files and the Reader monad to pass around the lookup environment.
Removed Logic.Item and Logic.Variables.  New convention is that stuff that messes with game files belongs in the File module.
Started to use Reader to pass around environment variable.  Reformulated some of the Item and Mod stuff.  Made some basic display precision functions. Next step is to properly assign a ModClass and then base display behavior on ModClass.