It is now over two years ago that Joe Groff’s proposal for flattening the function type of unapplied method references has been accepted.
Considering the benefits this proposal implies, I was astounded to see it lingering in the “accepted” section on the SE status page.
There has been some discussion about potential ABI-implications in late 2017, but it seems to have received little further attention.
Does anyone have an idea why this has been lingering for so long?
Perhaps I am vastly underestimating the work required to implement this proposal.
We never got around to implementing it and it sort of fell by the wayside.
Implementing this change properly would require a rather large rework of the declaration checker and SILGen. Internally in the compiler all methods have a type like
(Self) -> (Args...) -> () and abstracting away this assumption will require many changes.
The old behavior would also have to be simulated for source compatibility, and we would have to work out a migrator strategy.
I think if any members of the community were interested in seeing this revived, perhaps re-pitching it as a new proposal would be a good way forward. We need to discuss if some of the assumptions in the original proposal are still valid, since it is now almost two years later. In particular, we might want to consider a new syntax for the ‘uncurried’ form of the method, which would be backward compatible with existing code. @Joe_Groff suggested overloading keypath syntax for this, so you would write
\MyType.method to form an uncurried reference.