- Repeating arguments can cause exponential computation duplication:
[Jones
*et al.*, p. 119.](defun f (n) (if (= n 0) 1 (g (f (- n 1)) ) ) ) (defun g (m) (+ m m))

- The user should not have to understand the logic of the output program,
nor understand how the partial evaluator works.
- Speedup of partial evaluation should be predictable.
- Partial evaluation should deal with typed languages and
with symbolic facts, not just constants. For example, following
*z = abs(x)*we know*z 0*.