[Haskell-beginners] understanding type constructors and value constructors

Alex Belanger i.caught.air at gmail.com
Thu Sep 14 04:56:59 UTC 2017


I'm on my phone which makes replying painful, but consider:

data Weekday = Monday | Tuesday | Wednesday | Thursday | Friday

data Shape = Circle Int | Rectangle Int Int Int Int | Triangle Int Int

data Either a b = Left a | Right b

Cheers,
Alex

On Sep 14, 2017 12:05 AM, "Anwar Ludin" <anwar.ludin at gmail.com> wrote:

> Hello everyone,
>
> I have just started studying Haskell and I am having a hard time
> understanding type and value constructors.
>
> So to create a new type, you write something like:
>
> data FinancialInstrument = Financial  String Double
>                                            deriving (Eq, Show)
>
> and then you can write:
>
> ibm = Financial "ibm" 150
>
> OK all good. This initializes a FinancialInstrument. What I don't quite
> grasp is what is the purpose of Financial (the data/value constructor)? And
> from what I have read, you could have also written:
>
> data FinancialInstrument = FinancialInstrument String Double
>                                            deriving (Eq, Show)
>
> To me the second expression is a lot closer to the typical OOP way of
> doing things (where the type name and constructor(s) have the same name).
> Why would someone prefer the first notation?
>
> Once a value has been constructed, how can I access its fields?
>
> Is there a way to create values using named parameters?
>
> Thanks!
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170914/ec5fea45/attachment.html>


More information about the Beginners mailing list