
Max Bolingbroke wrote:
2010/2/2 Isaac Dupree
: I'm concerned in both your proposals, that single-letter names like "t" and "d" are common function parameters, thus possibly producing - shadowing warnings for all such functions in modules that happen to use TH - errors, I think, for some uses of TH inside such functions (either the function parameters must be renamed, or the TH splice module-qualified)
Yes, this is certainly an annoyance :-). However, we didn't have backcompat high up the list of priorities with these proposals - instead we wanted to look at how TH and QQ might be redesigned to work together a bit more neatly if we were starting with a clean slate today.
You can of course choose more expressive names than "e" and "t" if you're going to break backcompat anyway,
You could also do away with these names entirely, and use magic instead: instance IsString HsExpr where fromString = e Or perhaps a different typeclass for [|...|] blocks, class Quoted a where parseQuote :: String -> a -- for performance reasons: parseQuote' :: Ghc.PackedString -> a This also leaves the door open for constructions like: instance Quoted QuasiQuote where parseQuote xs = let (f,x) = splitAt '|' xs in (findParserByName f) x f = $[|foo| ... |] -- we still have to register foo somehow Twan