title: Is there a practical way of using natural numbers in Haskell?
body: <p>I'm learning Haskell and would like to impose the use of positive integers (1,2,3, ...) in some constructors, but I only seem to find the 'Int' and 'Integer' datatypes.</p>
  
  <p>I could use the canonical </p>
  
  <pre><code>data Nat = Zero | Succ Nat
  </code></pre>
  
  <p>but then I couldn't use 1, 4, ... to denote them.</p>
  
  <p>So I ask, is there a way to accomplish this? (which is like using 'unsigned' in C)</p>
  
  <p>Thanks in advance.</p>
  
  <p><strong><em>EDIT:</em></strong> I'm going the way of hiding it inside a module, as explained by C. A. McCann. Also, I must add the following link: <a href="http://haskell.org/haskellwiki/Smart_constructors" rel="noreferrer">http://haskell.org/haskellwiki/Smart_constructors</a> for a summary on the subject. Thanks for taking the time to answer!</p>