This is a really exciting area. See also the Cambria project [1] and the HN discussion from yesterday [2]. See [3,4] for a great introduction to category theory for programmers--we are all indebted to Milewski / Fong / Spivak / et al. for making this topic more accessible.
For anyone interested in computing pre-history, early twentieth century punched-card processing, before von Neumann, was all about taking (monoidal) data structures (encoded as a deck of cards) with historical values and either querying them or running updates (encoded as a second deck of cards) to produce freshly copied current values.
[1] https://www.inkandswitch.com/cambria.html
[2] https://news.ycombinator.com/item?id=24699615
[3] https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
[4] http://brendanfong.com/programmingcats.html