我必须实现一个程序,它找到无用的代码部分并用一些更好的代码替换它。我给你举个例子:
;;(define (positive-odd? n)
;; (if (and (odd? n) (positive? n)) #t #f))
应替换为:
;;(define (positive-odd? n)
;; (and (odd? n) (positive? n)))
我还有一个包含规则的列表。我将举例说明一条规则,它将帮助我们了解下面的例子:
;;(define redundant-if
;; '((WHEN (if ?cond #t #f))
;; (THEN ?cond)))
所以,我必须迭代这个规则列表,并找到规则和我的函数之间的匹配与无用的代码。要做到这一点,我只有一个想法,但我不认为这是一个好的:我从规则列表中采取非常规则,然后我迭代我的函数的主体,并寻找相似之处,当我找到一个,我替换代码。但我认为这样做很难。
请告诉我这个问题的实施情况。
答案 0 :(得分:2)
我认为您需要的是部分评估;
中找到使用重写规则来简化代数表达式的示例