Hello,
As I understand it, parameterized partial evaluation entails partially evaluating
a program with respect to `abstract' properties of a program
as opposed to specific values for variables.
I have the need to circumvent the `all or nothing' role
played by partial evaluation. By all or nothing I mean that if a
variable is static (with regard to partial evaluation) and has a value
supplied a-priori, then partial evaluation will simplify it
*everywhere* in the program. In other words, partial evaluation
makes no bias about that variable among contexts/different segments of the program.
For example, consider partially evaluating the following Scheme function
with respect to the property `a = 1 and d = 1 and
(b = 1 and c = 0 [under the a block]) and (b = 0 and c = 1 [under the d block]).'
(define (f a b c)
(if (equal? a 1)
(if (equal? b 1)
; do something here
(if (equal? c 1)
; do something else here
))
(if (equal? d 1)
(if (equal? b 1)
; do something now
(if (equal? c 1)
; do something else now)))))
where the output of the partial evaluation would be
; do something here
; do something else now
To me,
the property `a = 1 and d = 1 and (b = 1 and c = 0 [under the
a block]) and (b = 0 and c = 1 [under the d block])' seems abstract, akin
to parameterized partial evaluation.
This abstract property is a specification which
traditional partial evaluators do not accommodate.
Can parameterized partial evaluation realize this request or
am I thinking about parameterized partial evaluation wrongly?
Thank You and Best Regards,
S. Perugini