Заменить ненужные части кода - PullRequest
3 голосов
/ 28 марта 2012

Мне нужно реализовать программу, которая находит бесполезные части кода и заменяет ее более качественным кодом.Я приведу пример:

;;(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)))

Итак, я должен перебрать этот список правил и найти соответствие между правилами и моей функцией с помощьюбесполезный код.Для этого у меня есть только идея, но я не думаю, что она хорошая: я беру само правило из списка правил, затем перебираю тело своей функции и ищу сходства, а когда нахожу,Я заменяю кодНо я думаю, что это довольно сложно сделать.

Пожалуйста, дайте мне представление о реализации этой проблемы.

1 Ответ

2 голосов
/ 28 марта 2012

Я думаю, что то, что вам нужно, называется частичная оценка ;

Примеры, такие как использование правил перезаписи для упрощения алгебраических выражений, можно найти в Введение хакера в частичную оценку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...