On Tue, Jun 3, 2025, at 2:59 AM, Dmitry Derepko wrote:
>> 
>> Pipe and compose are importantly different operations.  I've had user-space 
>> implementations of both available for years in crell/fp:  
>> https://github.com/Crell/fp/blob/master/src/composition.php
>> I'd love to have a compose operator natively in PHP, too.  The RFC for that 
>> is already written, just needs code.  I hope to formally propose it soon:  
>> https://wiki.php.net/rfc/function-composition
> Hmm, that's great, but looks like we are missing something.
>
> 1. Would you propose the RFC to 8.5? I think it should be proposed with 
> the new pipe operator any way

I am working with someone on the implementation.  As soon as that's done I want 
to post it.  Whether it manages to get into 8.5 at this point is an open 
question.

> 2. RFC early feedback
>
> There is no big difference in DX with the new operator "+" for closures:
> - + operator may be overridden in some extensions and it also may 
> implement __invoke. What's expected behavior? It will be totally unclear

I expect the overlap there to be tiny, so it will rarely be encountered.  As to 
which "wins", I'd think probably the extension.

> - code examples from the rfc: https://3v4l.org/n7UB0 vs 
> https://3v4l.org/tOlft the first approach is better for me because it 
> may be batch-processed / combined / filtered / modified easily. So 
> taking my first message there are not so many changes: 
> https://3v4l.org/ncpEE
>
> Just try to imagine how to work with the composition and how it 
> perfectly works now: https://3v4l.org/ArK2O

If you want to do it that way, Crell/fp has you covered, have fun.  But the 
whole point of the RFC is to provide a native operator for concatenating 
functions.  Decomposing/deconcatenating an already composed function chain 
is... not a thing.  

> By the way, RFC describes userland "compose" function performance 
> problems, but there is no suggestion to make it natively, why so? 

Uh.  That's the entire point of the RFC?  Make a native compose operator that 
isn't even a function.  

--Larry Garfield

Reply via email to