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.