Tue Nov 20 08:53:21 EST 2018

build systems: from push to pull

From Conal's paper "Push-pull functional reactive programming"

I don't remember the contents, but sticking just to the push/pull
nomenclature, it is clear that when mixing imperative and functional,
there is going to be a place in the code where push and pull meet at a

The same happens in build systems:
- push: create products
- pull: download products

This is such a strong pattern that it is (almost?) guaranteed to be
explicit in code somewhere.

Maybe it is an implementation flaw?  What you want is everything to be
demand-driven, but in practice you also want to have a "push" phase,
even if it is only to check constraints on the code.  This phase is
development time, or compile time.  The "pull" phase is run time: name

So bottom line: the functional view is pull-only (binding).  The
imperative implementation of that is always push (set) and pull (get).
Or put differently: binding is done using statements.