Sent from my iPhone

On 15 May 2016, at 15:05, Brent Royal-Gordon via swift-evolution 
<[email protected]> wrote:

>> There we are. I read the declaration of the function from beginning to end
>> and gradually formed a rough understanding of it without needing to change
>> my expectations halfway through. I still have doubts about 'insertCount',
>> but I was at least able to formulate an hypothesis about its use.
>> 
>> YMMV, but as far as I'm concerned, the original declaration was much easier
>> to understand.
> 
> I actually agree with you for this case, but not *all* type information *has* 
> to be moved to the end. Try this on for size, which is actually still the 
> most natural way to write this declaration in SE-0081:
> 
> internal func _arrayOutOfPlaceReplace
> <B: _ArrayBufferProtocol, C: Collection>
> (_ source: inout B, _ bounds: Range<Int>, _ newValues: C, _ insertCount: Int)
>  where
>  C.Iterator.Element == B.Element,
>  B.Index == Int
> {
> 
> Now only the relatively unimportant details—that the buffer and collection 
> must have elements of the same type, and that the buffer must have integer 
> indices—are at the end, whereas the basic conformances required to make any 
> sense at all of the declaration are still inline.
> 
> This proposal *permits* you to hollow out the generic parameter list to the 
> point of vacuousness, but that doesn't mean it's the right thing to do. It 
> might make sense to ban a direct `X: Foo` requirement unless there was 
> already an `X: Bar` in the generic parameter list. Or we might simply need to 
> paraphrase the Perl manual page: "There are several ways to write a generic 
> requirement, so consider picking the most readable one."

I think you hit the nail on the head. Being able to let the developer decide 
how to place relevant type information with the freedom of being able to keep 
some/all/none type information local and some/none/all extra information moved 
to the end of the declaration. Don't we allow the same kind of freedom with 
protocols and extensions in a way?


> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to