This gist demonstrates a trick I came up with which is defining
IsString for Q (TExp a), where a is lift-able. This allows you
to write $$("...") and have the string parsed at compile-time.
This offers a light-weight way to enforce compile-time constraints. It's
basically OverloadedStrings with static checks.
This trick works already in existing (old) GHCs.