What is Idiom
Idiom is a domain-specific language, hosted in the general purpose language Haskell, which provides a statically-typed build system (similar to Make or Bazel in end result). It allows the user to declare desired artifacts to be built and in what manner, as if writing a normal imperative program, and explicitly declare the dependency graph between these artifacts. Data passing between the nodes in this dependency graph can be arbitrarily transformed by pure Haskell functions, giving a high degree of well-typed power over more conventional dynamically-typed build systems. Finally, the build can be inspected before running, and run either in part or in full, as needed.