Repeating arguments can cause exponential computation duplication: [Jones
, 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.