Time Libraries Rough Draft
Simon Marlow
simonmar at microsoft.com
Thu Feb 10 07:33:29 EST 2005
On 10 February 2005 10:15, Ashley Yakeley wrote:
> In article
>
<3429668D0E777A499EE74A7952C382D103238B8A at EUR-MSG-01.europe.corp.microso
> ft.com>,
> "Simon Marlow" <simonmar at microsoft.com> wrote:
>
>>> module System.Time.Clock ( ... ) where
>>>
>>> -- | standard Julian count of Earth days
>>> type JulianDay = Integer
>>>
>>> newtype DiffTime = MkDiffTime Integer
>>
>> Rather than exposing the constructor, I'd make it an abstract type
>> with an instance of Integral. You probably want the Integral
>> instance anyway, so that you can use overloaded literals, and then
>> there's not much use for the constructor.
>
> Do you mean for DiffTime or for JulianDay?
Maybe JulianDay should be an Integral type too. Of the three choices:
(a) type synonym for Integer
(b) non-abstract newtype
(c) abstract newtype
(a) and (c) are both better than (b). (c) is better than (a) in the
sense that you can use different instances for existing classes: eg. we
can have a specialised instance of Show for JulianDay, if we want.
So, I'd go for abstract newtypes consistently.
Cheers,
Simon
More information about the Libraries
mailing list