title: Template Haskell compile error when calling with different parameters
body: <p>Why does the following fail to compile (on GHC 7.4.2)?</p>
  
  <pre><code>{-# LANGUAGE TemplateHaskell #-}
  
  f1 = $([| id |])
  
  main = print $ (f1 (42 :: Int), f1 (42 :: Integer))
  </code></pre>
  
  <p>Note that the following compiles fine:</p>
  
  <pre><code>{-# LANGUAGE TemplateHaskell #-}
  
  f1 = id -- Don't use template Haskell here.
  
  main = print $ (f1 (42 :: Int), f1 (42 :: Integer))
  </code></pre>
  
  <p>Is there a language extension I can use to make the former compile?</p>
  
  <p><em>I know the Template Haskell seems silly in this example, but it's a simplified version of a more complex problem, which requires Template Haskell to process arbitrary sized tuples.</em></p>