On Jul 22, 2017, at 3:03 PM, Daryle Walker <[email protected]> wrote:
>> In my opinion, there is an easy three step plan :-) to solving this problem, 
>> riffing on Array:
> 
> Well, fixed-size arrays don’t have initializers, for the same reason tuples 
> don’t: they’re compound types instead of named types and they literally have 
> nowhere to place initializer definitions. But like tuples, FSAs have a 
> literal syntax that works as a substitute for full-blown initializers.

Ok, sure.  They aren’t literally initializers in the stdlib (they are built 
into the compiler), but they have initialization semantics and can be spelled 
in whatever way makes ergonomic sense.  Keeping them aligned with Array seems 
like a good starting point.

>> IMO, it isn’t a problem that C allows arrays to be uninitialized - the 
>> problem is that it is a really bad default.
> 
> I was struggling which way to go; add run-time deterministic initialization 
> or allow undefined behavior. For now, it’s neither; the current compile-time 
> deterministic initialization has to be followed. But compile-time DI isn’t 
> big a setback as long as you have all the information you need to set every 
> element before initialization-assignment (with a function term).

If you’re thinking of allowing something like:


var x : Int[4]   // or whatever

// These are all initializations
x[0] = 1
x[1] = 2
x[2] = 3
x[3] = 4


Then it is possible to enable some simple cases (like this), but not the more 
useful and general cases.  I’d suggest starting without this, since it could be 
added at any time in the future if there were a compelling reason to.

-Chris


_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to