On Monday, 30 November 2015 at 19:36:18 UTC, Atila Neves wrote:
As much as possible, yes. But non-trivial builds require a DAG, ordering, and plain just telling the computer what to do.
Representing a DAG in a logic language is not a problem. The biggest problem is probably that most programmers (myself included) have an imperative mindset.
for Ant. CMake script is bad enough, I can't imagine how much I'd bang my head against the wall trying to contort XML into a bad version of Lisp.
I don't know much about CMake, only given it a glance as make+Python is good enough for me. But I see your point. I don't know how expressive CMake is, but it does take quite a bit of adjustment to express oneself in a deductive (logic) language.
The truth is, for most projects a `dub build` will do, and that's fine. Declarative is the way to go then. But when you have binaries reading files to auto-generate code that then gets compiled in two different ways, one of which is copied... you get the idea.
Hmm, yes, but if we (in fantasy land) start from scratch and have a generic distributed build system with a shared nosql database for the intermediate results and some kind of linda-like tuple space to back it up with meta data. Then a deductive language to update the tuple space. Then you have regular executable workers pull stuff out of the linda-space, and put the results back in. Unlike a file system, it would be transactional.
