I'm happy to finally share my implementation of 7GUIs (source) in Elm.
The last two tasks, Circle Drawer and Cells were the most challenging and interesting of the seven tasks. However, I was delighted 😄 to see how effective Elm was at modeling both tasks.
Change propagation for Cells
One of the main highlights for me was figuring out a neat and performant implementation of change propagation for Cells. I modeled it as a directed graph and to figure out the order in which to propagate the changes through the cells I used a topological sort. I also achieved a clean separation of the domain model for the spreadsheet and the UI which allowed me to easily write tests for the spreadsheet. Finally, testing allowed me to come up with a well-crafted test case that breaks naive implementations of change propagation.