Absolutely ridiculous.  The Gregorian calendar is in universal use for
civil purposes and definitely belongs in the core.

On Saturday, April 24, 2010, Darren Duncan <dar...@darrenduncan.net> wrote:
> I want to clarify that I currently believe that the Perl 6 core should only 
> include temporal roles and *no* temporal classes.  So the Perl 6 core could 
> provide, say, 3 roles, Instant, Duration, and Calendar (or use some other 
> name for the last one).  It would also provide now(), sleep(), and calendar() 
> routines that have signatures of Instant, Duration, and Calendar, 
> respectively, without necessarily being more specific.
>
> And so, what now() returns would then be entirely implementation-defined; all 
> Perl 6 guarantees is that now() would return some object that does Instant 
> but not what class that object is nor what any of its capabilities are.  Each 
> Perl 6 implementation would be responsible for bundling at least one non-core 
> module of its own choice that provides a class for each of the 3 core roles, 
> such that now() can return something on that system.  Or alternately, now() 
> doesn't actually have to work at all, say if this Perl is to run say on some 
> embedded system all of whose programs don't need a clock, in which case no 
> implementing classes are bundled.
>
> The Calendar role would be the role composed by values that you get from 
> introspecting the return value of now() so that you know in a more generic 
> sense what that Instant-doing object is capable of.  You could consult 
> calendar() to introspect what classes now() and sleep() use and know about 
> how to interpret them.
>
> All details specific to any calendar, including Gregorian, including concepts 
> like seconds or hours or days, should be left out of the core and be provided 
> by separate modules.  Said modules can be self-contained, just say using 
> Perl's ordinary numeric and string types for internal representation, and 
> Perl's single core now() routine they can use to determine the current 
> datetime, and the module can introspect its result or calendar() and figure 
> out how to map that to the internal representation or API it wants to use, as 
> well as figure out the proper way to invoke sleep().
>
> -- Darren Duncan
>
> Darren Duncan wrote:
>
> Jon Lang wrote:
>
> We _should_ define a "default calendar", which is the one that Perl
> uses when returning values from now(), etc.  That is, Perl 6.0.0
> should define the Instant and Duration roles as you outlined above,
> plus a set of classes that implement those roles according to the
> Gregorian calendar system.  If you want to replace that with another
> calendar system in your implementation of Perl, the language already
> has the means of allowing you to do so (e.g., replacing &now with a
> variant that returns a different type of Instant).
>
>
> I am more on the fence in regards to default implementations of the roles.
>
> But I think that all the messy details of particular calendars, such as 
> Gregorian leap seconds and timezones etc, should not be bundled with Perl, 
> and be separate, where users can upgrade them separately independent of Perl 
> as the measurements and political declarations come in.
>
> I still suggest just letting Perl itself be minimalist as far as providing 
> classes go, just say have a class representing a Unix et al timestamp that 
> directly corresponds to the implementation's time system, which differs per 
> OS, plus a means for a program to ask what the current OS's calendar is, and 
> then let separately distributed DateTime et al modules examine this and take 
> care of all the mapping.
>
> For example, Perl 6 should include the analogy of Perl 5's "time" but not an 
> analogy to "gmtime" or "localtime"; implementing the latter should be left 
> exclusively to separate modules.
>
> This fits in with a Perl philosophy of mainly sticking to being grammar and 
> letting CPAN/etc be the language, especially where complexity comes in.
>
> It also means that temporal modules can be bundled with Perl, but that is a 
> choice made by the Perl packagers, not the Perl core, same as deciding what 
> templating or networking or database or whatever modules to bundle.
>
>
>

-- 
Mark J. Reed <markjr...@gmail.com>

Reply via email to