title: Get a Haskell record's field names as a list of strings?
body: <p>Say I have the following:</p>
  
  <pre><code>data Rec = Rec {
      alpha :: Int,
      beta  :: Double,
      phi   :: Float 
  } 
  
  sample = Rec 1 2.3 4.5
  </code></pre>
  
  <p>I understand Template Haskell &amp; the <code>reify</code> function can get me the record's field names. That is:</p>
  
  <pre><code>print $(f sample) --&gt; ["alpha", "beta", "phi"]
  </code></pre>
  
  <p>There is also a claim that this can be done without Template Haskell. Can someone provide an example implementation for this can be accomplished?</p>