A 2018 (with a revised 2020 version) paper by [[Simon Peyton Jones]], [[Neil Mitchell]] and [[Andrey Mokhov]] about [[Build Systems]] such as [[Make]], [[Shake]], [[Bazel]], [[Nix]] or [[Excel]]. The paper extracts two key design choices (abstractions): - order in which tasks are built - whether or not a task is rebuilt This is interesting to me because I am pretty sure this applies to [[PROJ - GO GO GOLEMS - GEPPETTO]] and in general the [[Flour]] framework to turn [[PROJ - GO GO GOLEMS - GLAZED]] commands into individual, persistable (serverless) microservices, with caching or not. In fact, now that I write it out, with an API call being so costly, a build system is exactly the way to model such a chain computation. They extract abstractions out of considering multiple real world existing systems, by building different versions of them to describe their essence, by the composition of two design choices. - [[ZK - 2023-04-19 - Abstractions allow on to show the differences and similarities between concrete examples]] - [[ZK - 2023-04-19 - Abstractions allow to recombine, they are a generative process]]