Source: https://www.cs.cornell.edu/~jnfoster/papers/frenetic-icfp11.pdf