Россия, Москва |
Реализация категориальной абстрактной машины
Теоретические сведения
Категориальная абстрактная машина - это математическая формализация компьютера на основе категориальной комбинаторной логики.
Состояния КАМ принадлежат пространству декартово замкнутых категорий (д.з.к.), важными свойствами которых являются тождественное преобразование, а также операции композиции, образования упорядоченной пары, взятия проекций, каррирования и аппликации.
Состояние категориальной абстрактной машины в произвольный момент времени характеризуется тройкой объектов:
<T,C,S>
где T - терм, C - код, S - стек или дамп.
Основными инструкциями КАМ являются следующие:
Fst Snd < , > e L ' car cdr push swap cons app cur quote
SML-функции для первых двух из этих инструкций имеют вид:
fun Fst(x,_)=x; fun Snd(_,y)=y;
Задание
Сформулируйте формальную постановку задачи, запишите правила вывода и реализуйте программу на SML в соответствии с вариантом исполнения.
Реализовав необходимые инструкции КАМ ( Fst, Snd, " < ", " > ", e, L, " ' ", car, cdr, push, swap, cons, app, cur, quote ), после преобразования в ламбда-выражение и КАМ-код, провести максимально возможное число шагов преобразования кода и при возможности вычислить значение терма:
- 4!
- 1+2+3+4