Почему TemplateHaskell заставляет GHC загружать пакеты?

У меня есть тривиальная программа Template Haskell, которая печатает имя текущего модуля (Main, здесь):

{-# LANGUAGE TemplateHaskell #-}
module Main
( main
) where

import Language.Haskell.TH
import Language.Haskell.TH.Syntax

modName ∷ String
modName = $(fmap loc_module qLocation »= λmod → return (LitE (StringL mod) ))

main ∷ IO ()
main = putStrLn modName

Когда я компилирую это, я получаю следующие сообщения о загрузке от ghc:

tsuraan@localhost ~/test/modname $ ghc --make Main
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Loading package ghc-prim... linking... done.
Loading package integer-gmp... linking... done.
Loading package base... linking... done.
Loading package array-0.4.0.0... linking... done.
Loading package deepseq-1.3.0.0... linking... done.
Loading package containers-0.4.2.1... linking... done.
Loading package pretty-1.1.1.0... linking... done.
Loading package template-haskell... linking... done.
Linking Main...

Почему ghc загружает все эти пакеты, когда включен Template Haskell? Всякий раз, когда я создаю программу, использующую Template Haskell, особенно ту, которая построена для множества пакетов, мои предупреждения компиляции перегружены этими излишними сообщениями «Загрузка». Было бы неплохо, если бы я мог остановить печать сообщений или остановить (ненужное? )Загрузка модуля вообще не происходит.

7
задан tsuraan 10 July 2012 в 21:37
поделиться