title: Typeclass representing functions
body: <p>Forgive me if this is a dumb question, but is there a typeclass that represents all functions?  Like, lets say I have a type like this</p>
  
  <pre><code>data Foo a = Thing a 
  
  instance (Show a) =&gt; Show (Foo a) where
      show (Thing a) = show a
  </code></pre>
  
  <p>And I want to display <code>Thing (\x -&gt; 1)</code>.  Maybe do some sort o reflection on the method to pretty print some metadata about this?</p>
  
  <p>Trying it I get the following error</p>
  
  <pre><code>&gt; Thing (\x -&gt; 1)
  
  &lt;interactive&gt;:113:1:
      No instance for (Show (t0 -&gt; a0)) arising from a use of `print'
      Possible fix: add an instance declaration for (Show (t0 -&gt; a0))
      In a stmt of an interactive GHCi command: print it
  
  &lt;interactive&gt;:113:14:
      No instance for (Num a0) arising from the literal `1'
      The type variable `a0' is ambiguous
      Possible fix: add a type signature that fixes these type variable(s)
      Note: there are several potential instances:
        instance Num Double -- Defined in `GHC.Float'
        instance Num Float -- Defined in `GHC.Float'
        instance Integral a =&gt; Num (GHC.Real.Ratio a)
          -- Defined in `GHC.Real'
        ...plus 11 others
      In the expression: 1
      In the first argument of `Thing', namely `(\ x -&gt; 1)'
      In the expression: Thing (\ x -&gt; 1)
  </code></pre>
  
  <p>Which makes sense, since there is no instance of <code>show</code> for <code>t0 -&gt; a0</code> but I am not sure how to describe an instance of this typeclass?  </p>
  
  <p>This isn't for anything production, I am just messing around with Haskell and curious what I can and can't do.</p>