After a lot of toying, decreased the memory usage significantly through two improvements.  One was making the readPAKFiles function pure instead of an IO result (this improved from 95 meg to around 50).  The other was changing the keys in the PAKFiles map from FilePath/String to Text, and doing a string to text conversion in the lookup function