Re: To :D or not to :D

[email protected] ("Patrick R. Michaud")
Newsgroups perl.perl6.language
Message-ID <[email protected]>
On Mon, Oct 12, 2015 at 09:51:13PM +0200, Mark Overmeer wrote:
> > 	method new(MyClassHere:U: *@args) { ... }
> > 
> > in the constructor, which would be quite hostile to newbies. It's still
> > not clear to me how to avoid that.
> 
> It is also unclear to me what this means.  It is a method which requires
> and undef parameter?

Because of the second colon, it's a method accepting an undef invocant.
This is what would be needed in order for

    MyClassHere.new(...)

to work the way you expect (since MyClassHere is undefined).

> > Another concern is that if "everything" defaults to :D, then classes
> > (and other type objects) aren't really first class objects anymore,
> > which is a really neat thing to have.
> 
> Can you give me an example?  Many other languages are capable to live
> without undef and have first class type objects.  

Keep in mind that what Perl 6 calls a "type object" isn't quite the
same as class objects in other languages -- a Perl 6 typename is
really an undefined instance of a class.  In other words, the
identifiers C<Int>, C<Rat>, C<Array> etc. refer to instances of
those classes just like the literals C<3>, C<4/5>, and C<[1,2,3]> are
instances of those classes.  They share the same method spaces.

Pm
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.