On Mon, 2004-04-26 at 16:20, Richard Proctor wrote:
> Issues:
> 
> 1) Why does this only use Version and Author?  Suppose there are versions
> for different oses or that use other particular libraries that are wanted
> or not?

personally, I think this should be handled in the class itself.
you always "use DBI", don't "use DBI-(Any)-(Any)-MSWin32" or "...-linux"
or "...-whatever". class name, version and author(ity) seem to me a good
set to univocally identify a class.

> 2) Shouldn't all these properties just be in a hash against the module
> rather than some having special significance?  Others can then be simply
> added as appropriate.

see below.

> 3) Why is the information positional rather than by keyword property?
>   use Dog :version«1.2.1» :author«JRANDOM» :os«cpm»;

probably because use itself can take parameters (or adverbs), and you
don't want them to collide with the class metadata.

> 4) What are the expected rules for versioning?  While the public CPAN has
> one set of versioning, other projects have weird versioning rules, with
> letters and numbers.  What would work and why?

not to mention the fact that a lot of modules do things like:

$VERSION = sprintf("%d.%02d", q$Revision: 1.46 $ =~ /(\d+)\.(\d+)/);

which I think is a Good Thing, and should stay there.

> These are not fully thought through answers, but illustrate some thoughts
> or the matter.

well, I have an idea on the matter. given that class definitions are
closures to be executed by the class constructor code, there should be a
context, somewhere, that knows about the current class being
constructed. in this context (and no others, presumably), the .meta
method could be given write-access to the metadata of the class.

so, you can say:

    class Dog-1.21-JRANDOM { ... }

as well as:

    class Dog {
        .meta.version = 1.21;
        .meta.author = "JRANDOM";
        # and of course...
        .meta.description = "This class implements camera obscura.";
        .meta.subject = <<optics boxes>>;
        .meta.language = "ja_JP";
        # etc.
    }

cheers,
Aldo

Reply via email to