RE: [PHP-DEV] Gauging Interest:RFC to add map() function
> 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)