Mebbe the naiive expectations arise because most compilers (those for D, C++, 
C#, C, Java) take the expression `15 + 0.6` and returns a double - the highest 
general 'blanketing' type - even though the first operand is an int. I forgot 
what this concept was called, though... 

I would at least expect it when the variable has the type explicitly declared 
(`Base[] list`), since the following list would be seen as an initialization... 
Or is there another way that you initialize arrays, be they static or dynamic?

Bill Baxter Wrote:

> I'm not sure what the problem is.  I think Walter likes the current
> scheme because it's simple for the compiler and simple to explain.
> Unfortunately I think it is counter to naive expectations, which means
> that even though it's simple to explain, it *has* to be explained to
> the uninitiated.
> NumPy works the way you suggest.  It picks the most generic type that
> can hold the answer.  I'm not sure what the algorithm is but it seems
> to give adhere much better to the principle of least surprise.   But
> maybe the fact that NumPy only cares about numeric types makes the
> problem easier.  But I should would like it if this worked
>      auto foo = [1,1,1,0.5];
> and gave me a double[].
> Anyway, that behavior seems to do what most people expeect.  On the
> other hand I've seen this topic of picking the first element's type
> come up several times here, generally because people didn't expect
> that behavior..
> 
> --bb

Reply via email to