Re: Re: Generators in PHP
| From: | Alex Aulbach | Date: | Wed, 25 Jul 2012 16:54:54 +0000 |
| Subject: | Re: Re: Generators in PHP | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-61784@lists.php.net to get a copy of this message | ||
2012/7/25 Andrew Faulds <ajf@ajf.me>:
> Experience can be helpful. But you must support things with facts
Ok, I tried to bring all the pro arguments together.
Suggestion:
For a generator, rename the keyword "function" to ... "generator" or
something like that. Example:
generator hugo()
{
yield ...
}
Fact: yield/generators is more or less complicated, this shouldn't be
changed - it's a proven concept.
Fact: yield makes functions some kind of "different".
Fact: It doesn't matter how much difference and if PHP has already
"different" behaving functions. We're talking about now.
Fact: It doesn't matter how it is implemented in other languages,
because we talk about PHP and not other languages.
Fact: This is also good style in general: Call the things what they are.
Fact: as PHP-developer we must try to avoid making things more
complicated, because this is one of the best features of PHP.
Fact: it's easy to implement a new keyword into PHP for that case
Experience: Most PHP programmers will have problems to understand
generators because it is a function that generates an iterator...
something magic <eyesroll> they never heard of before.
Experience: generators/yield can't be explained on one page. Much
programmers will never ever read so much docs. :)
Experience: good features are self-explaining. A function which
returns an iterator because of a simple word in it's body is not.
Experience: They will make stupid mistakes, because they mix yield
function with normal functions.
Experience: They will make stupid mistakes, because they will look for
"return" instead for "yield".
Experience: again, yield is more or less complicated, it's in this
case not a good idea to cover complexity by using already existing
language constructs.
Experience: Not using the same name will remove a little bit pressure
from "busy" programmers
Experience: It's of course their fault, if the don't learn how to use
something. But this is against the concepts of PHP. This means: If we
have the chance to make things easier we must do it.
Experience: The current concept dosn't "feel right" for me. I like to
listen to my belly in those questions, because he is in most cases
right. With the change I suggested he stops grumbling.
Please correct me if I use arguments I thought they have been
generally agreed/some of them are new.
-
Alex Aulbach