[Haskell-cafe] Template haskell and the dependencies of the generated executable

Aldo Davide aldodavide at gmx.com
Tue Mar 31 16:37:29 UTC 2015

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:


in addition to the ones that the non template haskell version of the program depends.

Shouldn't ghc avoid that?

More information about the Haskell-Cafe mailing list