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]]