[phobos] phobos commit, revision 1689

Steve Schveighoffer schveiguy at yahoo.com
Thu Jun 24 09:11:48 PDT 2010


Another option -- put the code in as an optional build parameter for dmd.  Then people who want to get phobos ready can build their own dmd copy to work on the issues.  These should be easy, but mostly busywork, because the compiler will simply complain when something is invalid.  They'll all be pretty much 3-second bugs :)

And as far as "design by newsgroup" I think almost all the new features were vetted on the newsgroup at one point, including inout.  It's unfair to simply point to ones you disagree with as evidence of failure ;)

In defense of @property, I think we all agree we needed something to distinguish setters from single-arg functions.  I think with a reasonable rule, we can allow calling no-arg functions without parens (via a proposal I made earlier that as long as the function returns void, it should be allowed).  All that's left is actual property getters.  I can't say enough that @property in those cases has nothing to do with functionality and everything to do with human interpretation.  Like it or not, the use of parentheses is an extension of the function name, whose semantic meaning of course is unenforceable.  But just allowing the user to decide whether something is a property or a function leaves the interpretation up to the user, taking all the power away from the author who wrote the function.  @property is a clarification tool, and by necessity, is implemented via convention rather than compiler enforcement.


-Steve


----- Original Message ----
> From: Andrei Alexandrescu <andrei at erdani.com>
> To: Discuss the phobos library for D <phobos at puremagic.com>
> Sent: Wed, June 23, 2010 12:18:34 PM
> Subject: Re: [phobos] phobos commit, revision 1689
> 
> Walter tried to enable the restriction at some point but that breaks a 
ton 
> of code in Phobos (and probably elsewhere). We discussed adding it 
as an 
> compiler flag that I'd turn on, get Phobos to work, and then check 
in before 
> dmd makes it mandatory.

@property is a prime example countering the 
> theory that Walter doesn't 
listen to what's going on on the newsgroup (lazy 
> is another one.) 
Unfortunately, design by newsgroup is seldom good, sigh. 
> Landslide 
popular vote is not a good measure of quality. Good examples of 
> 
proposals coming from the newsgroup have been, I think, most always 
> 
originating from strong individual propositions (e.g. Steve's 
> inout).


Andrei

On 06/23/2010 11:11 AM, David Simcha 
> wrote:
> When is @property going to start being enforced, i.e. when are 
> you going
> to no longer be able to call non @property functions w/o ()s 
> or assign
> using the = sign to a non- at property function?  I never 
> really followed
> the newsgroup discussion b/c I was happy with the old 
> status quo and
> didn't think Walter would give in, so I lost track of 
> what exactly
> @property even does.
>
> On Wed, Jun 23, 2010 
> at 12:07 PM, Andrei Alexandrescu <
> href="mailto:andrei at erdani.com">andrei at erdani.com
> <mailto:
> ymailto="mailto:andrei at erdani.com" 
> href="mailto:andrei at erdani.com">andrei at erdani.com>> 
> wrote:
>
>     On 06/23/2010 10:59 AM, Max Samukha 
> wrote:
>
>
>
>         On Wed, Jun 
> 23, 2010 at 5:45 PM, Andrei Alexandrescu
>        
> <
> href="mailto:andrei at erdani.com">andrei at erdani.com <mailto:
> ymailto="mailto:andrei at erdani.com" 
> href="mailto:andrei at erdani.com">andrei at erdani.com>
>    
>      <mailto:
> href="mailto:andrei at erdani.com">andrei at erdani.com <mailto:
> ymailto="mailto:andrei at erdani.com" 
> href="mailto:andrei at erdani.com">andrei at erdani.com>>> 
> wrote:
>
>             I think it 
> should be a property. I followed the convention that
>      
>        stuff that doesn't change "this" is a 
> property.
>
>            
> Andrei
>
>
>         But property setters 
> are often supposed to change 'this'?
>
>
>     Well 
> of course I was referring to getters.
>
>
>    
>      Honestly I can
>         hardly see 
> much utility in @property. For example, Q_PROPERTY in
>    
>      Qt adds
>         value. It is 
> introspectable, can fire a notification when changed,
>    
>      optionally shows up in the designer, is resettable to a 
> default
>         value
>      
>    and more. Is @property only useful for disambiguating the 
> case
>         when a
>      
>    function returns a callable?
>
>
>     On 
> the same grounds, I opposed @property tooth and nail and now,
>  
>    unpleasantly enough, my worst scares are coming true: @property is 
> a
>     non-falsifiable sham, a convention defined for the sake 
> of following
>     it. I strongly believe the alternatives I 
> proposed would have been
>     vastly 
> better.
>
>
>     Andrei
>
>  
>    _______________________________________________
>    
> phobos mailing list
>    
> ymailto="mailto:phobos at puremagic.com" 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com <mailto:
> ymailto="mailto:phobos at puremagic.com" 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com>
>  
>   
> http://lists.puremagic.com/mailman/listinfo/phobos
>
>
>
>
> 
> _______________________________________________
> phobos mailing 
> list
> 
> href="mailto:phobos at puremagic.com">phobos at puremagic.com
> 
> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos 
> mailing list

> href="mailto:phobos at puremagic.com">phobos at puremagic.com

> href="http://lists.puremagic.com/mailman/listinfo/phobos" target=_blank 
> >http://lists.puremagic.com/mailman/listinfo/phobos


      


More information about the phobos mailing list