First 2MB isn't a lot of RAM nowadays, do you mean 2GB or is that just compared to the rest of the program ?
Second, your powersOfTen should probably be :

> powersOfTen = iterate (10*) 1

Or maybe even a Vector (if you can guess the maximum value asked of it) or a MemoTrie (if you can't) since list indexing is slow as hell.
That could help with memoPair which should definitely be a Vector and not a list.

Good luck (on the other hand, maybe your program is already "good enough" and you could just switch to another project)
--
Jedai