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 
<http://docs.julialang.org/en/latest/stdlib/base/#Base.zero>, 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 
<https://github.com/JuliaStats/DataFrames.jl/blob/211cd659cb7f9035980697f7effa081e29b9bf3e/src/dataframe/dataframe.jl#L805>
.

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:

   1. 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.
   2. 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] 
> <javascript:>> 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?
>>>>
>>>>
>>>>
>>>
>

Reply via email to