Re: Allow default parameters before non-default ones?

From: Date: Wed, 15 Dec 2021 02:50:56 +0000
Subject: Re: Allow default parameters before non-default ones?
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-116645@lists.php.net to get a copy of this message
>Вторник, 14 декабря 2021, 12:21 +03:00 от Rowan Tommins
><rowan.collins@gmail.com>:
> 
>On 13/12/2021 23:12, Kirill Nesmeyanov wrote:
>> I'll add that leading optional parameters are needed to implement currying and partial
>> application.
>>
>> ```
>> function foo(int $opt = 42, int $req) {}
>>
>> $foo = curry(foo(...), 23);
>>
>> // $foo = fn($opt = 42, $req = 23);
>> ```
>
>
>I'm confused what the optional parameter is doing here - is it just to
>avoid telling the curry function which argument you're fixing? And
>wouldn't both currying and partial application result in a
>single-argument closure there, not just making both parameters optional?
>
>I would expect it to look something like this:
>
>
>```
>function foo(int $a, int $b) {}
>
>$foo = partial(foo(...), 23, 0);
>
>// $foo = fn($b) => foo(23, $b);
>
>$foo = partial(foo(...), 23, 1);
>
>// $foo = fn($a) => foo($a, 23);
>
>$bar = curry(foo(...));
>
>// $bar = fn($a) => fn($b) => foo($a, $b);
>```
>
>
>> While this is not a popular practice in PHP, this deprecation notification «breaks» all
>> code that uses functional pradigm/concepts.
>
>That's clearly an exaggeration; it's clearly possible to write
>functional-style code without making use of this particular trick. If it
>is a *common* trick, then that's worth considering, but it would be good
>to see some evidence of that.
>
>Regards,
>
>--
>Rowan Tommins
>[IMSoP]
>
>--
>PHP Internals - PHP Runtime Development Mailing List
>To unsubscribe, visit:  https://www.php.net/unsub.php
 
Yep, you rightly noticed, I gave an example completely incorrectly.

I got acquainted with this approach with the reverse order of arguments by default while studying
lambda calculus, but now I can no longer remember in what cases they are used =\

Sry for that.
 
--
Kirill Nesmeyanov
 


Thread (10 messages)

« previous php.internals (#116645) next »