Max Bolingbroke wrote:
2010/2/2 Isaac Dupree <m...@isaac.cedarswampstudios.org>:
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
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to