Yes, the use of zero is an anachronism from a design in which zero was used to have a default value for arbitrary types.
-- John On Nov 10, 2014, at 8:22 AM, Ivar Nesje <[email protected]> wrote: > Basically this is an issue with DataFrames using a function in base for a > different purpose than its documented intent. zero() has been documented to > mean additive identity, and Date and DateTime, doesn't have an additive > identity. (apart from the period types, but it is unclear which one to return) > > Looking at dataframes, I discovered that they already monkey patch > Base.zeros() to make it work for strings. > > I think this is a bigger issue to be discussed in the contest of the use case > in DataFrames. My two obvious suggestions would be to: > Change the documentation for zero() to say that it is the additive identity > unless it doesn't make sense, in which case any default value is good. > Create a new function in Base for this specific need of a default value. > Ivar > > kl. 03:53:43 UTC+1 mandag 10. november 2014 skrev Jacob Quinn følgende: > Hmmm........I guess we could add 0 and 1 definitions if it'll be generally > useful (i.e. Date/DateTime s are ordinals with numeric-like properties, so > being able to define zero/one and have them work with generic functions). > > It still just seems a little weird because there's not a real solid > reasoning/meaning. I think one reason a lot of other languages define a > zero(::DateTime) is because values can be "truthy" or "falsey", so you would > compare a date with zero(::DateTime) to check for falseness. In Julia, you > have to use explicit Booleans, so that's not as important a reason. > > Happy to hear other opinions/use cases from people though. > > -Jacob > > On Sun, Nov 9, 2014 at 9:23 PM, Thomas Covert <[email protected]> wrote: > To your first question, I'm sure there are good reasons for not having zeros > in the Date and Time types, but in other languages (i.e., stata), dates and > times are stored as integers or floats with respect to some reference time. > So, I *think* the 0-date in stata refers to January 1, 1960. Obviously this > is fairly arbitrary, but there is some precedence for it in other languages. > > On Sunday, November 9, 2014 8:17:04 PM UTC-6, Jacob Quinn wrote: > What Date would represent zero(::Date)? Or one(::Date), for that matter? > Doesn't seem like a particularly useful definition. What's the use case? > > On Sun, Nov 9, 2014 at 9:14 PM, Thomas Covert <[email protected]> wrote: > I'm using Dates.jl on 0.3 and have discovered that there is no zero defined > for the Date or DateTime types. Is this intentional? > > > >
