Hi Neil, thanks for the response. The problem is this: "It is in the IO monad because the actual value of the key may vary from run to run of the program" (taken from the web page). Since I'm relying on the order, not just equality, this will seriously screw things up, because my records are done at compile time.