Seems you derived a pretty similar solution to what I did a year ago Anyway there was also quite some flame wars at that time around this.
Anyway, the truth is that discussion is one of the harder ones. I understand the need for this but I have myself experience for working with 50k+ LOC elm single page code base. On the other hand, I even saw some newcomers to our team trying to abuse those patterns to make everything a stateful module (even though actually it’s all just function that manipulates part of a global state). The trouble though is that those things are hard to describe within text short enough one is willing to read within README or discussion. So I guess we’re doomed to argue about certain things over and over despite there is a good intention on both sides.
Anyway more to the actual topic. The experience forced me to remove view part of the type definition. You really want to use views as a regular function and pass some arguments from one view to another. Otherwise, 30% of your app code will be just for synchronization of state shared across components.