( This is going to be obscure missing context. No time to explain.. ) What is this pattern? - binary is called "run_codegen" - source is called "makefile.hs" Inbetween sits "build". Why is the outside (the binary) different from the inside (the data structure passed to "build"). Basically, malke "build" explicit. makefile.hs could be a separate module exporting only a data structure.