title: How to define a function that takes natural numbers of a data type and return their sum?
body: <p>I am still learning how value constructors work. I read a lot about data types and their value constructors. The problem is that I never saw them in practice. For example</p>
  
  <pre><code>data Nat = Zero | Succ Nat
  </code></pre>
  
  <p>Now if we want to define a functions that takes two inputs of Nat and returns the product, how would we do that? We have to convert them to Haskell Integrals if we want to use the operator *.
  And if we want to implement a mult function that takes two Nat's which should multiply them without converting them to Haskel Integrals, how would that look like?</p>
  
  <p>I really don't get data types|value constructors yet. Can anyone illustrate how to correctly use such value constructors from the data Nat example above?</p>