> On Nov 21, 2017, at 22:54, Douglas Gregor via swift-evolution
> <swift-evolution@swift.org> wrote:
>
>> On Nov 21, 2017, at 10:48 PM, David Hart <da...@hartbit.com> wrote:
>>
>>
>>
>> On 22 Nov 2017, at 07:41, Douglas Gregor via swift-evolution
>> <swift-evolution@swift.org> wrote:
>>
>>>
>>>
>>>> On Nov 21, 2017, at 10:37 PM, Chris Lattner <clatt...@nondot.org> wrote:
>>>>
>>>> On Nov 21, 2017, at 9:25 PM, Douglas Gregor <dgre...@apple.com> wrote:
>>>>>> Or alternatively, one could decide to make the generics system *only and
>>>>>> forever* work on nominal types, and make the syntactic sugar just be
>>>>>> sugar for named types like Swift.Tuple, Function, and Optional. Either
>>>>>> design could work.
>>>>>
>>>>> We don’t have a way to make it work for function types, though, because
>>>>> of parameter-passing conventions. Well, assuming we don’t invent
>>>>> something that allows:
>>>>>
>>>>> Function<Double, inout String>
>>>>>
>>>>> to exist in the type system. Tuple labels have a similar problem.
>>>>
>>>> I’m totally aware of that and mentioned it upthread.
>>>
>>> Eh, sorry I missed it.
>>>
>>>> There are various encoding tricks that could make this work depending on
>>>> how you want to stretch the current generics system…
>>>
>>> I think it’s straightforward and less ugly to make structural types allow
>>> extensions and protocol conformances.
>>
>> Can somebody explain to me what is less ugly about that? I would have
>> naturally thought that the language would be simpler as a whole if there
>> only existed nominal types and all structural types were just sugar over
>> them.
>
> See Thorsten’s response with, e.g.,
>
> Function<Double, InoutParam<String>, Param<Int>>
>
> which handles “inout” by adding wrappers around the parameter types (which
> one would have to cope with in any user of Function), but still doesn’t
> handle argument labels. To handle argument labels, we would need something
> like strings as generic arguments.
Oh, good! A use case for “literals as generic parameters” other than Vectors
and Fixed-Size Arrays!
- Dave Sweeris
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution