RE: Time Libraries Rough Draft

On 10 February 2005 10:15, Ashley Yakeley wrote:
In article
<3429668D0E777A499EE74A7952C382D103238B8A@EUR-MSG-01.europe.corp.microso
ft.com>, "Simon Marlow"
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
participants (1)
-
Simon Marlow