title: Generic version of tail for List type in Haskell
body: <p>It is quite easy to express <em>head</em> with <em>foldr</em>:</p>
  
  <pre><code>head xs = foldr const (error "Empty list") xs
  </code></pre>
  
  <p>Is there a generic way to express <em>tail</em> without using constructors?
  I already found this answer (<a href="https://stackoverflow.com/questions/15651772/getting-the-head-and-tail-of-a-custom-list-type-haskell">Getting the head and tail of a custom List type Haskell</a>) which says "no". If this is impossible could someone please explain why?</p>