Re: To :D or not to :D

[email protected] (Mark Overmeer)
Newsgroups perl.perl6.language
Organization MARKOV Solutions
Message-ID <[email protected]>
* Moritz Lenz ([email protected]) [151012 15:32]:
> >   . are they using :D correctly?
> 
> Yes, though not everybody uses :D as much as they do. Do you check that
> all the parameters that your Perl 5 methods/subs receive are defined? If
> not, you wouldn't use :D in Perl 6 either.

In Perl5, you get slower code when you test for definedness... in Perl6
you get faster (better optimized) code.  That's a big difference.

> FWIW you can now (as of a few days ago) control the default with
> use invocant :D;

How can de invocant not be defined?

> use parameters :D;

The new "use warnings"/"use strict"...

> which means all those :D annotations can go away, and you have to use :_
> explicitly if you want to allow all.

Oh, use :U for that.  Ehhh.... already in use.

> That said, I agree that it's the wrong default. And the design documents
> even mandate a default to :D, though at the time it was written, it
> wasn't clear how to switch off that default, nor how to avoid having to
> write
> 
> 	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?

> And I don't know if we can change it now without creating a huge havoc
> in the existing ecosystem.

There shouldn't be a problem making :D a superfluous option.  Of swiftly
add  "use parameters $_;"  to all modules.  And there still quite a
number of other crucial changes going in anyway...

> 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.  In the old days, I
had to implement the Algol68 style during compile construction course ;-)

> >   . :D looks really ugly, don't you think?  Try to explain to students
> >     to add this smiley everywhere.
> 
> It's not uglier than a 'die "Must be defined" unless defined $x'

Much too expensive in Perl5.
-- 
Regards,

               MarkOv

------------------------------------------------------------------------
       Mark Overmeer MSc                                MARKOV Solutions
       [email protected]                          [email protected]
http://Mark.Overmeer.net                   http://solutions.overmeer.net
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.