<div dir="ltr"><font face="monospace, monospace">When you use record syntax, accessors are automatically created for you. So,</font><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">data Person = Person {<br></font></div><div><font face="monospace, monospace"> name :: String</font></div><div><font face="monospace, monospace"> , age :: Integer</font></div><div><font face="monospace, monospace"> , favThing :: String</font></div><div><font face="monospace, monospace"> }</font></div><div><font face="monospace, monospace"><br></font></div><font face="monospace, monospace">means that name, age and favThing are functions that do exactly what you want:</font><div><font face="monospace, monospace"><br></font><div><font face="monospace, monospace"> name :: Person -> String</font></div><div><font face="monospace, monospace"> age :: Person -> Integer</font></div><div><font face="monospace, monospace"> favThing :: Person -> String</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">So you just need to call age on a Person value to get the age.</font></div><div><font face="monospace, monospace">Due to this functionality, the names in record syntax can not start with an uppercase letter.</font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 19 February 2015 at 22:27, Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Thanks, <br>
<br>
That is not what I mean , <br>
<br>
I mean this : <br><span class="">
<br>
<span>data</span> Person <span>=</span>
Person<br>
<span>{</span> name <span>::</span>
<span>String</span> ,<br></span>
Age <span>::</span> Integer<span></span>
, <br>
FavThing <span>::</span> <span>String</span> <span></span> <span>}</span>
<br>
<br>
<br>
and i want to get the Age I could do this : <br>
<br>
getAge <span>(Person</span> <span>{age</span>
<span>=</span> ag})<span></span> <span>=</span> ag<br>
<br>
Roelof<br>
<br>
<span></span>
<br>
Sumit Sahrawat, Maths & Computing, IIT (BHU) schreef op
19-2-2015 om 17:37:<br>
</div><div><div class="h5">
<blockquote type="cite">
<div dir="ltr">
<div>I can't understand what you mean by those colons in the
second definition of Person. If you're thinking of type
signatures, then that doesn't work in haskell.</div>
<div>In an ADT, you give names to possible values. So "Name
String" will work whereas "Name : String" won't work.</div>
<div><br>
</div>
<div><font face="monospace, monospace">data Person = Name String</font></div>
<div><font face="monospace, monospace"> | Age Integer</font></div>
<div><font face="monospace, monospace"> | FavThing
String</font></div>
<div><font face="monospace, monospace"><br>
</font></div>
means that Person can be <b><i>one of</i></b> these things
(which is not what you want).
<div><br>
</div>
<div>What you want is possible with record syntax. He'll detail
it later I think.</div>
<div>If you're interested in learning about it beforehand, look
it up in the haskell wikibook (another great haskell
resource).</div>
<div><br>
</div>
<div>More about ADTs in general: <a href="http://en.wikibooks.org/wiki/Haskell/Type_declarations#data_and_constructor_functions" target="_blank">http://en.wikibooks.org/wiki/Haskell/Type_declarations#data_and_constructor_functions</a></div>
<div>The link to the specific section: <a href="http://en.wikibooks.org/wiki/Haskell/More_on_datatypes#Named_Fields_.28Record_Syntax.29" target="_blank">http://en.wikibooks.org/wiki/Haskell/More_on_datatypes#Named_Fields_.28Record_Syntax.29</a></div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 19 February 2015 at 21:58, Roelof
Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello, <br>
<br>
Im reading chapter 2 of the CIS 194 course about
enumaratuin.<br>
<br>
Now they give this example : <br>
<br>
<pre><code><span>-- Store a person's name, age, and favourite Thing.</span>
<span>data</span> <span>Person</span> <span>=</span> <span>Person</span> <span>String</span> <span>Int</span> <span>Thing</span>
<span>deriving</span> <span>Show</span>
<span>brent ::</span> <span>Person</span>
brent <span>=</span> <span>Person</span> <span>"Brent"</span> <span>31</span> <span>SealingWax</span>
<span>stan ::</span> <span>Person</span>
stan <span>=</span> <span>Person</span> <span>"Stan"</span> <span>94</span> <span>Cabbage</span>
<span>getAge ::</span> <span>Person</span> <span>-></span> <span>Int</span>
getAge (<span>Person</span> _ a _) <span>=</span> a
I understand how this works.
But I wonder if there is no "better" way to get the Age.
Is it now wise to make a person data like this :
data Person = Name : String
| Age : Integer
| FavThing : String
And if so , how can I get the age then ?
Roelof
</code></pre>
<br>
</div>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div>Regards</div>
<div dir="ltr">
<div><br>
</div>
<div>Sumit Sahrawat</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Beginners mailing list
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div>Regards</div><div dir="ltr"><div><br></div><div>Sumit Sahrawat</div></div></div></div></div></div></div>
</div>