RE: [PHP-DEV] Gauging Interest:RFC to add map() function

From: Date: Wed, 26 Jun 2013 17:07:03 +0000
Subject: RE: [PHP-DEV] Gauging Interest:RFC to add map() function
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
> From: Jeremy Curcio [mailto:[email protected]]
> Sent: 26 June 2013 17:10
> To: Mike Willbanks
> Cc: PHP Internals
> Subject: Re: [PHP-DEV] Gauging Interest:RFC to add map() function
>
> > I am curious with something that is so easy; why would you want it in core?
>
> A lot of the Math Functions could be considered "so easy".
>
> ...
>
> floor() could be written out as:
> ... [sort-of-floor implemented in PHP] ...
>
> The above examples are just a few that stick out to me I'm sure that looking
> through the list of available math functions would provide a few more examples.
> Keeping these examples in mind, I don't follow the logic of range mapping being
> too easy to implement manually whenever it is needed to not warrant being
> included in core.

Actually, that "floor" implementation will give incorrect answers in quite a few cases.

"floor" is very difficult to implement correctly and efficiently for floating point
numbers, which is why PHP offers a builtin function which delegates to the standard c lib's
implementation of "floor".
See https://github.com/php/php-src/blob/642721b38a9c5ebf336c81027c0dafd6f9246bd6/ext/standard/math.c#L320

That's the same for the other Math functions you have listed: there is real benefit to allowing
access to the *correct* and efficient standard C implementations.


This is not the case for the "map" function you have proposed: there is not a
corresponding builtin function in the C standard library, which is why PHP doesn't offer it as
a builtin.


There is another serious problem with the proposal: the name "map" already has a specific
meaning in programming languages:
http://en.wikipedia.org/wiki/Map_(higher-order_function)
http://php.net/manual/en/function.array-map.php

For this proposal to have any traction, you need to:
 * demonstrate why PHP programmers need this implemented for them (e.g. for the "floor"
func, it is easy to find tricky edge cases which justify the C lib's existence)
 * come up with a name which is self-explanatory and discoverable to users of PHP (i.e. if a PHP
programmer needs to map floats from one range to another range in a linear fashion, what will they
search for? "1-d affine transform PHP", perhaps?)

TBH, I don't think this proposal has much chance of being accepted (I don't have voting
rights BTW).

Best,


Rich



Richard Bradley
Tel : 020 7485 7500 ext 3230 | Fax : 020 7485 7575

softwire
Sunday Times Best Small Companies - UK top 20 three years running
Web : www.softwire.com | Addr : 325 Highgate Studios, 53-79 Highgate Road, London NW5 1TL
Softwire Technology Limited. Registered in England no. 3824658. Registered Office : 13 Station Road,
London N3 2SB



Thread (15 messages)

« previous php.internals (#67902) next »