Mazdaywik / refal-5-framework

Фреймворк для трансформации программ на Рефале-5
https://mazdaywik.github.io/refal-5-framework
MIT License
3 stars 0 forks source link

Научиться конвертировать программу в ограниченный Рефал #2

Open Mazdaywik opened 6 years ago

Mazdaywik commented 6 years ago

Что такое «ограниченный Рефал»

Ограниченный Рефал — подмножество базисного Рефала, в образцах которого недопустимы открытые переменные и повторные e- и t-переменные. Такие образцы называются L-выражениями.

Подмножество интересно тем, что в нём выразима и замкнута прогонка.

Турчин также запрещал в ограниченном Рефале t-переменные, но их добавление ни сколько не влияет на выразимость прогонки.

Общий взгляд на преобразование

Также, как и ранее, предлагается моделировать сопоставление с образцом, и когда фиксируются «дырки открытых переменных», что-то делать. Но не только это.

Ещё нужно внимательнее обрабатывать закрытые переменные — если закрытая переменная с таким же именем уже встречалась, то это повторная переменная.

Пока образец не преобразован к виду L-выражения, мы даже не смотрим — есть ли при нём условие. Когда уже преобразован — обработка условия становится тривиальной.

Поэтому нужно: