I don't think replace was written having anything other than a single wild in mind. Is it a bug? It's nonintuitive at the least, but it's not a simple logical error -- it's a consequence of how match and this routine work since the sub-args (and that means 2, x, 2*x, y and finally 2*x + y) are all tested by the pattern and the results recorded by substituting the results into the output pattern. As I mentioned somewhere in this PR process, I am tempted to make `exact` the default behavior of this routine.