[Haskell-cafe] ReRe: Basic question concerning data constructors
jake.mcarthur at gmail.com
Sun Dec 30 17:21:45 EST 2007
On Dec 30, 2007, at 12:32 PM, Joost Behrends wrote:
> Thanks to both fast answers.
> there remain problems with Jakes mail for me. This:
>> When you define datatypes, you are essentially defining a type-level
>> constructors on the left hand side and (value-level) constructors on
>> the right hand side.
> is very useful for me. "data" defines TWO constructors, ok.
To be more accurate, it defines one type constructor and however many
value constructors you want to define.
> Then i arrive at
>> . Now, let's say we had tried defining ClockTime with parameters as
>> you suggested.
>> ClockTime' :: Integer -> Integer -> *
>> Do you see the problem? In order to use the ClockTime type
>> constructor, we would have to use Integer values.
> Cannot see any problem here - do we NOT want ClockTime to be
> initialized by two
> Integers ? Or is this the main reason for introducing "TOD" - to be
> able to
> change it without having to make any changes to code using ClockTime ?
> To repeat myself - am i right understanding, that this needs a
> differently named
> data constuctor ?
No, we do not want the _type_ to be parameterized with our _values_.
That is the difference between ClockTime and TOD; ClockTime is on the
type level and TOD is on the value level. ClockTime is the type of the
value returned by TOD after applying it to two Integer values.
More information about the Haskell-Cafe