[Haskell-beginners] enumaratioin question

Sumit Sahrawat, Maths & Computing, IIT (BHU) sumit.sahrawat.apm13 at iitbhu.ac.in
Thu Feb 19 17:22:13 UTC 2015


Yes, "age p" gives the age of the person represented by "p".

On 19 February 2015 at 22:50, Roelof Wobben <r.wobben at home.nl> wrote:

>  Oke, I read that part.
>
> Then I would be age p = ag
>
> Roelof
>
>
>
> Sumit Sahrawat, Maths & Computing, IIT (BHU) schreef op 19-2-2015 om 18:03:
>
> When you use record syntax, accessors are automatically created for you.
> So,
>
>  data Person = Person {
>        name     :: String
>     , age      :: Integer
>     , favThing :: String
>     }
>
>  means that name, age and favThing are functions that do exactly what you
> want:
>
>      name     :: Person -> String
>     age      :: Person -> Integer
>     favThing :: Person -> String
>
>  So you just need to call age on a Person value to get the age.
> Due to this functionality, the names in record syntax can not start with
> an uppercase letter.
>
> On 19 February 2015 at 22:27, Roelof Wobben <r.wobben at home.nl> wrote:
>
>>  Thanks,
>>
>> That is not what I mean ,
>>
>> I mean this :
>>
>> data Person = Person
>>       { name :: String ,
>>          Age :: Integer ,
>>         FavThing :: String  }
>>
>>
>> and i want to get the Age I could do this :
>>
>> getAge (Person {age = ag}) = ag
>>
>> Roelof
>>
>>
>> Sumit Sahrawat, Maths & Computing, IIT (BHU) schreef op 19-2-2015 om
>> 17:37:
>>
>>  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.
>> In an ADT, you give names to possible values. So "Name String" will work
>> whereas "Name : String" won't work.
>>
>>  data Person = Name String
>>             | Age Integer
>>             | FavThing String
>>
>>  means that Person can be *one of* these things (which is not what you
>> want).
>>
>>  What you want is possible with record syntax. He'll detail it later I
>> think.
>> If you're interested in learning about it beforehand, look it up in the
>> haskell wikibook (another great haskell resource).
>>
>>  More about ADTs in general:
>> http://en.wikibooks.org/wiki/Haskell/Type_declarations#data_and_constructor_functions
>> The link to the specific section:
>> http://en.wikibooks.org/wiki/Haskell/More_on_datatypes#Named_Fields_.28Record_Syntax.29
>>
>> On 19 February 2015 at 21:58, Roelof Wobben <r.wobben at home.nl> wrote:
>>
>>>  Hello,
>>>
>>> Im reading chapter 2 of the CIS 194 course about enumaratuin.
>>>
>>> Now they give this example :
>>>
>>> -- Store a person's name, age, and favourite Thing.data Person = Person String Int Thing
>>>   deriving Show
>>> brent :: Person
>>> brent = Person "Brent" 31 SealingWax
>>> stan :: Person
>>> stan  = Person "Stan" 94 Cabbage
>>> getAge :: Person -> Int
>>> getAge (Person _ a _) = 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
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>
>>>
>>
>>
>>  --
>>    Regards
>>
>>  Sumit Sahrawat
>>
>>
>> _______________________________________________
>> Beginners mailing listBeginners at haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>>
>
>
>  --
>    Regards
>
>  Sumit Sahrawat
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>


-- 
Regards

Sumit Sahrawat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150219/c9370ab9/attachment.html>


More information about the Beginners mailing list