Re:Using attrs for everything in Python
by Animats on Thursday August 25, 2016 @07:55PM
(#12363378)
Assigning a variable to a destination declared to be an incompatible type should produce an error at compile time if possible, and at at run time otherwise. That's what type declarations are all about.
[ Parent
| on HN ]
I think you misunderstand. Here's an example:
``` foos = [Foo(a=0), Foo(a=1)] f0 = foos[0] foos[0] = Foo(a=2)
print(f0.a) # 0 print(foos[0].a) # 2 ```
`foos` is a list of type `Foo`, but it still can't be safely made into a dense list (at least not naively).
You are right. Array elements need to have value semantics to do complete unboxing. But for NumPy-like use cases, they do.
It should be noted that PyPy already does unboxing Animats suggested, without any type annotation. At least for 4 years. It is not theoretical. https://morepypy.blogspot.com/2011/10/more-compact-lists-wit...