My initial thought as I read the proposal was to represent currentLocation as a lexical bound variable, thus "error" is rewritten to the expression:
let currentLocation = "someplace.hs:123"
in errorLoc currentLocation
there is no referntial transparency issue in that because there is no global function "currentLocation", it's a lexically bound variable in the rewrite environment.
Btw, I'm happy that people want to implement whatever they feel like. Feel free to do whatever makes sense. My comments are not meant to discourage this :-)
Alexander