title: Haskell's algebraic data types: "pseudo-extend"
body: <p>I am learning about Algebraic DTs in haskell. What I would like to do is create a new ADT that kind of "extends" an existing one. I cannot find how to express what I would like, can someone sugest an alternative pattern or sugest a solution. I want them to be distinct types, but copying and pasting just seams like a silly solution. The code below best describes what I am seeking.</p>
  
  <pre><code>data Power =
    Abkhazia |
    -- A whole bunch of World powers and semi-powers
    Transnistria
      deriving (Eq, Show)
  
  data Country = 
    --Everything in Power | 
    Netural |
    Water
      deriving (Eq, Show)
  </code></pre>
  
  <p>Edit: I think It need a little clarification... I want to be able to do this (in ghci)</p>
  
  <pre><code>let a = Abkhazia :: Country
  </code></pre>
  
  <p>and not </p>
  
  <pre><code>let a = Power Abkhazia :: Country
  </code></pre>