On Mon, May 11, 2020 at 1:52 AM Ricky Teachey <ricky@teachey.org> wrote:
I have nothing particularly useful to add, only that this is potentially a really fantastic idea with a lot of promise, IMO.

It would be nice to have some view objects with a lot of functionality that can be sliced not only for efficiency, but for other purposes. One might be (note that below I am assuming that slicing a view returns another view):

nodes = [(0,0), (1,0), (1,1), (1,0)]
triangle1 = [view_of_node_idx0, view_of_node_idx1, view_of_node_idx3]
triangle2 = [view_of_node_idx1, view_of_node_idx2, view_of_node_idx3]

Now if I move the node locations, the triangles reflect the update:

nodes[:] = (1,1), (2,1), (2,2), (2,1)

After reading my sent message I decided it probably isn't totally clear:

What I mean here is, using a view to construct other objects, such that when the viewed object is updated, the objects making use of the views "see" the update (without having to implement callbacks and observer patterns are all of that kind of thing).