Hello! Thanks for Hakyll!
On that page, I think the text describing each of the three concepts is pretty easy to follow, but I'm really missing a sort of high-level overview of how they relate to one another.
Here's what I've reverse-engineered from the text on the page and from the Haddocks: a Hakyll site consists of a Haskell program and some data files. The Haskell program will, when run, read the data files and emit a static website. This Haskell program implements a build system, and tries to minimally rebuild the site in response to changes in the data files.
As I understand it, a rule declares a dependency between the data files and the generated site. There are two kinds of dependencies: those that should be triggered when data files change (match rules) and those that should just run (create rules). Within a rule, a route selects the address in the resulting site at which the resulting data should be stored, and a compiler specifies the actual content of the data.
Is this a basically correct understanding? Would it make sense to add an overview along these lines to the top of that tutorial page? Did I miss it somewhere else?
Thanks again for the nice tool!