> On Jul 31, 2017, at 11:29 PM, Félix Cloutier <felix...@yahoo.ca> wrote:
> No, this is a misunderstanding: I mean "you" as yourself, not "you" as the 
> compiler. As far as I know, given a type variable, as in `let foo: 
> NSObject.Type = NSArray.self`, you (the developer) can't use `foo` to 
> instantiate a generic type.

Ah, yes, I did misunderstand what you were saying.

> The question stands again: are there any specific reasons that you can't do 
> that right now, or is it just because the need for this is not particularly 
> evident?

There is no specific reason you can't do that right now.  We could certainly 
just allow you to name a local constant in type contexts if it happens to be of 
metatype type — I don't know if that would be the best language design, but 
there's nothing inherent about the language model that makes it unreasonable.  
I do think we would at least demand that it be a constant and not a variable.

John.


> 
> Félix
> 
>> Le 31 juil. 2017 à 11:29, John McCall <rjmcc...@apple.com> a écrit :
>> 
>>> On Jul 31, 2017, at 3:58 AM, Félix Cloutier <felix...@yahoo.ca> wrote:
>>> It seems to me that this applies just the same to type generic parameters. 
>>> Are there any reason that you can't instantiate a generic type at runtime, 
>>> or is it just because the need is not as evident as it would/could be with 
>>> non-type generic parameters?
>> 
>> Are you under the impression that Swift does not, today, instantiate generic 
>> types at runtime?
>> 
>> A lot of this entire thread seems to be premised on really weird, incorrect 
>> assumptions about the Swift compilation model.
>> 
>> John.
>> 
>>> 
>>>> Le 30 juil. 2017 à 21:10, John McCall via swift-evolution 
>>>> <swift-evolution@swift.org> a écrit :
>>>> 
>>>>> On Jul 30, 2017, at 11:43 PM, Daryle Walker <dary...@mac.com> wrote:
>>>>> The parameters for a fixed-size array type determine the type's 
>>>>> size/stride, so how could the bounds not be needed during compile-time? 
>>>>> The compiler can't layout objects otherwise. 
>>>> 
>>>> Swift is not C; it is perfectly capable of laying out objects at run time. 
>>>>  It already has to do that for generic types and types with resilient 
>>>> members.  That does, of course, have performance consequences, and those 
>>>> performance consequences might be unacceptable to you; but the fact that 
>>>> we can handle it means that we don't ultimately require a semantic concept 
>>>> of a constant expression, except inasmuch as we want to allow users to 
>>>> explicitly request guarantees about static layout.
>>>> 
>>>> Value equality would still affect the type-checker, but I think we could 
>>>> pretty easily just say that all bound expressions are assumed to 
>>>> potentially resolve unequally unless they are literals or references to 
>>>> the same 'let' constant.
>>>> 
>>>> The only hard constraint is that types need to be consistent, but that 
>>>> just means that we need to have a model in which bound expressions are 
>>>> evaluated exactly once at runtime (and of course typically folded at 
>>>> compile time).
>>>> 
>>>> John.
>>>> 
>>>>> Or do you mean that the bounds are integer literals? (That's what I have 
>>>>> in the design document now.)
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>> On Jul 30, 2017, at 8:51 PM, John McCall <rjmcc...@apple.com> wrote:
>>>>> 
>>>>>>> On Jul 29, 2017, at 7:01 PM, Daryle Walker via swift-evolution 
>>>>>>> <swift-evolution@swift.org> wrote:
>>>>>>> The “constexpr” facility from C++ allows users to define constants and 
>>>>>>> functions that are determined and usable at compile-time, for 
>>>>>>> compile-time constructs but still usable at run-time. The facility is a 
>>>>>>> key step for value-based generic parameters (and fixed-size arrays if 
>>>>>>> you don’t want to be stuck with integer literals for bounds). Can 
>>>>>>> figuring out Swift’s story here be part of Swift 5?
>>>>>> 
>>>>>> Note that there's no particular reason that value-based generic 
>>>>>> parameters, including fixed-size arrays, actually need to be constant 
>>>>>> expressions in Swift.
>>>>>> 
>>>>>> John.
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>> 
>> 
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to