I pretty much agree with @codafi's position (though @codafi feel free to correct me if this seems mischaracterized) that _.self
is, at best, only marginally more inscrutable than similar forms such as (_, _)
or (_) -> _
. Already, there are undoubtedly situations where it's 'obvious' that the specified type is going to be a two-element tuple, or a function of a single argument, but the element types/parameter and result types are non-obvious. The restriction on top-level placeholders only saves us from one specific issue, where the top-level type itself provides all the context needed.
As you note, we can already write Some<_, _>
(or even without SE-0315, just Some
), so it's not clear to me that allowing one more step of inference makes the difference between "clear because the type was specified in source" and "extremely inscrutable."