Replace unnecessary parts of the code

I have to implement a program that finds useless pieces of code and replaces it with some better code. I'll give you an example:

;;(define (positive-odd? n)
;;  (if (and (odd? n) (positive? n)) #t #f))


should be replaced with:

;;(define (positive-odd? n)
;;  (and (odd? n) (positive? n)))


I also have a list with rules. I will give you an example of a rule that will help us with the following example:

;;(define redundant-if
;;  '((WHEN (if ?cond #t #f))
;;    (THEN ?cond)))


So, I have to iterate over this list of rules and find a match between the rules and my function with useless code. For this I only have an idea, but I don't think it's a good one: I take a very rule from the list of rules, then I iterate over the body of my function and look for similarities, and when I find it, I replace the code. But I think this is quite difficult to do.

Please give me an idea of ​​this issue.


source to share

1 answer

I think you need a partial estimate ;

Examples such as using rewrite rules to simplify algebraic expressions can be found in Hacker's Introduction to Partial Evaluation



All Articles