Mazdaywik/refal-5-framework

Уточнение API и примеры использования фреймворка

Mazdaywik opened this issue · 1 comments

Эта задача — подзадача для #5.

Следует подготовить набор примеров инструментов для данного фреймворка: препроцессор, верификатор, оптимизатор, альтернативный компилятор. Попутно вылезут проблемы в API компонентов, которые потребуется исправить. Я об этих проблемах знаю, но пока (2018-11-01) хочу полностью зафиксировать в документации текущее состояние.

Нужны следующие тестовые примеры:

  • Препроцессор, выполняющий макроподстановки.
  • Верификатор входных форматов функций: все образцы должны быть уточнениями заявленного формата.
  • Оптимизатор на уровне дерева — заменяет вызовы Map на явные циклы.
  • Альтернативный компилятор — объединяет все файлы в один файл с необходимым переименованием локальных функций.
  • Преобразователь программ, использующих копилку, в программы с явным параметром.
  • Преобразователь программ в continuation passing style, соответственно, будет доступной функция CallCC (call with current continuation)

Примеры не должны рассматриваться как законченные инструментальные средства, они лишь proof of concept.

Для каждого примера должно быть описание в документации.

Препроцессор не нужен (cм. #7), вычеркнул.