title: Haskell : Why is this incorrect? I put a datatype as a type constructor in another data declaration
body: <h1>Problem:</h1>
  
  <p>Make all combinations of 3-tuple representing noun-verb-noun sentences. To do this I decided to try and make the problem easier to read, because verbComb's future wasn't looking "clean", by playing with data types and encountered this problem. Please help!</p>
  
  <h1>My Code:</h1>
  
  <pre><code>type Letter = Char
  
  data Word = Noun (Letter, Letter, Letter)| Verb (Letter, Letter,    Letter)
    deriving (Ord, Eq, Show)
  
  data Sentence = (Word, Word, Word)
    deriving (Show)
  
  stops = "pbtdkg"
  vowels = "aeiou"
  
  vowelComb :: String -&gt; String -&gt; [(Char, Char, Char)]
  vowelComb s v  = combine s v s ++ combine (reverse s) v s ++ combine s v (reverse s)
    where combine f s t = [ (x,y,z) | x &lt;- f, y &lt;- s, z &lt;- t, x == 'p']
  
  verbComb :: Word -&gt; Word -&gt; Sentence
  verbComb = undefined
  </code></pre>
  
  <p><br></p>
  
  <h1>Error:</h1>
  
  <p><code>chp10.hs:88:21:
      Ambiguous occurrence ‘Word’
      It could refer to either ‘Chp10.Word’, defined at chp10.hs:75:1
                            or ‘Prelude.Word’,
                               imported from ‘Prelude’ at chp10.hs:28:8-12
                               (and originally defined in ‘GHC.Types’)
  Failed, modules loaded: none.</code> </p>