
What Edward says also applies to code quotations. So, for example:
module M
import IntSet
f :: Q Exp -> Q Exp
f blah = [| fromList $blah |]
module N where
import M
h x = $(f [| [x,x] |])
The splice expands to (fromList [x,x]), but the fromList guaranteed to be the fromList in scope where f is defined (in M), and NOT whatever other fromList might be in scope at the splice site in N.
Moreover, you do not need to import IntSet.
I hope that helps. Would someone like to add a section to https://wiki.haskell.org/Template_Haskell, to explain? There are several tutorials there as well.
Simon
From: Glasgow-haskell-users [mailto:glasgow-haskell-users-bounces@haskell.org] On Behalf Of Edward Kmett
Sent: 17 March 2015 05:01
To: J. Garrett Morris
Cc: GHC users
Subject: Re: Qualified names in TH?
Using {-# LANGUAGE TemplateHaskell #-} you can use 'foo and ''Foo to get access to the names in scope in the module that is building the splice, rather than worrying about what names are in scope in the module the code gets spliced into.
-Edward
On Mon, Mar 16, 2015 at 10:54 PM, J. Garrett Morris