Template haskell and the dependencies of the generated executable

When I use template haskell to generate some code at compile time and splice it in my program, the generated executable still depends on template haskell (in case of -dynamic), or the Template haskell library is included in my executable (in the case of -static). Isn't that unnecessary? For example. Suppose that I use the almost trivial raw-strings-qq package to implement a hello world program: {-# LANGUAGE QuasiQuotes #-} import Text.RawString.QQ (r) main = putStrLn [r|Bonjour tout le monde|] Then the r quasi quoter runs at compile time and generates a string literal. So basically, the program that gets compiled is the following: main = putStrLn "Bonjour tout le monde" Despite that template haskell is only used at compile time, the generated executable (compiled with the -dynamic flags) depends on the following libraries: libHSarray-0.5.0.0-ghc7.8.4.so libHScontainers-0.5.5.1-ghc7.8.4.so libHSdeepseq-1.3.0.2-ghc7.8.4.so libHSpretty-1.1.1.1-ghc7.8.4.so libHSraw-strings-qq-1.0.2-ghc7.8.4.so libHStemplate-haskell-2.9.0.0-ghc7.8.4.so in addition to the ones that the non template haskell version of the program depends. Shouldn't ghc avoid that?
participants (1)
-
Aldo Davide