<br><br><div class="gmail_quote">On Feb 10, 2008 12:09 AM, Mattes Simeon &lt;<a href="mailto:simeon.mattes@gmail.com">simeon.mattes@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello to everybody<br><br>I am an new user of Haskel and generally in functional programming and I could<br>say that I am very impressed from this Language. Though I can&#39;t understand the<br>use of datatypes.<br><br>Let&#39;s take a firly simple situtation<br>
<br>e.g. data Pair a b = Pair a b<br><br>i.e. an new type with name Pair parameterized over the types a,b with one<br>Constructor named Paid which take two values of type a,b<br><br>a more complex one would be<br>data Either a b = Left a | Right b<br>
<br>i.e a new type named Either parameterized over the types a, b and two<br>Constructors 1. Left which take one value of type a and 2. Right which takes one<br>value of type b<br><br>I consider that the definitions above are well formulated. Nevertheless I can&#39;t<br>
understand them quite well.<br><br>I have read that datatypes are used to define new structures. So, is there any<br>corresponding example in C, sinch I am quite familiar with structures in it? I<br>hope the word C here is allowed here :o)<br>
</blockquote><div><br>I guess C++ would be closer...<br><br>template&lt; class A, class B&gt;<br>struct Pair<br>{<br>&nbsp;&nbsp;&nbsp; A fst;<br>&nbsp;&nbsp;&nbsp; B snd;<br>} <br></div></div><br>template&lt; class A, class B&gt;<br>
struct Either<br>
{<br>
&nbsp;&nbsp;&nbsp; enum {Left, Right} tag;<br>&nbsp;&nbsp;&nbsp; union{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A left;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B right;<br>&nbsp;&nbsp; };<br>
} <br><br>In the second example the tag would be used to figure out which of the two alternatives the structure actually is. In Haskell you can just pattern match on the constructor.<br clear="all"><br>-- <br>Sebastian Sylvan<br>
+44(0)7857-300802<br>UIN: 44640862