develooper Front page | perl.perl6.language | Postings from December 2003

FW: Vocabulary

Thread Next
From:
Austin Hastings
Date:
December 12, 2003 13:26
Subject:
FW: Vocabulary
Message ID:
ICELKKFHGNOHCNCCCBKFOEJNCIAA.Austin_Hastings@Yahoo.com

> -----Original Message-----
> From: Luke Palmer [mailto:fibonaci@babylonia.flatirons.org]
> Sent: Friday, December 12, 2003 6:23 AM
> 
> So I'm seeing a lot of inconsistent OO-vocabulary around here, and it
> makes things pretty hard to understand.
> 
> So here's how Perl 6 is using said inconsistent terms, AFAIK:
> 
>     - attribute
>       A concrete data member of a class.  Used with C<has>.
> 
>     - property
>       An out-of-band sticky note to be placed on a single object.
>         Used with C<but>.
> 
>     - trait
>       A compile time sticky note to be placed on a wide variety 
> of things. Used with C<is>.

Did I miss something with IS and OF?

That is, I think:

  C<is> means storage type, while C<of> means trait or class:

  my @a is Herd of Cat;

declares a Herd (presumably a base class of some collection type) with the trait that, in this case, members will be of Class Cat.

Did this change when I wasn't looking?

>     - role
>       A collection of methods to be incorporated into a class sans
>         inheritance (and maybe some other stuff, too).  Used with C<does>.

No comment, since this is still hovering (see Larry's reply).

> 
> So for example:
> 
>     class Dog
>         does Boolean                # role
>         is extended                 # trait
>         is Mammal                   # [1]

The only difference I can see here between C<does Boolean> and C<is extended> would be the declaration of Boolean or extended (unless C<is> can only be used with built-in traits, which seems unnecessarily restrictive...)

>     {
>         has $.tail;                 # attribute
>         has @.legs;                 # attribute
>     }
> 
>     my $fido = Dog.new
>                 but false;          # property
> 
> Hope that clears things up.
> 
> Luke
> 
> [1] This is a base class, which is an overloaded use of C<is>.  Though,
> upon A12 release, we'll probably find out that it's not overloaded but
> instead, elegantly unified, somehow. 

Thanks for bringing this out.

=Austin


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About