Hi everyone, On 24 Sep 2014, at 23:17, Rowan Collins <[email protected]> wrote:
> switch ( $number ) use ( === ) {
[...]
> switch ( $age ) use ( < ) {
[...]
> switch ( calculate_age($birth_date, $departure_date) as $age_at_departure )
> use ( < ) {
[...]
> switch ( $product ) use ( instanceOf ) {
All of these examples are trying to reinvent concepts that can be solved with
guards, pattern matching and overloading in other languages. In Erlang one can
write the same function name multiple times and guard it ("when" in fact(N)) or
match the value ("0" in fact(0)).
fact(N) when N>0 ->
N * fact(N-1);
fact(0) ->
1.
In Scala one could replicate the instanceof behaviour by defining multiple
methods of the same name with different argument types.
So I would rather see us making method declarations more flexible to cover
those use cases instead of shoving all the functionality into switch/case. Last
time I checked the interpreter to try and introduce more features around method
declarations, it looks incredibly hard to do in a way that performs well. What
is our stance on adding advanced features around declaring methods?
cu,
Lars
signature.asc
Description: Message signed with OpenPGP using GPGMail
