Категориальная абстрактная машина (КАМ).
КАМ состоит из трех регистров: два стека (код и стек) и регистр терм.
Код Стек
![]() | ![]() |
Терм
![]() | ![]() | ![]() | |||||
![]() | ![]() | ||||||
![]() | ![]() | ||||||
![]() |
И элементы стека, и элементы терма - символьные выражения, в них могут размещаться структуры символьных данных.
В начале программа в виде кода содержится в стеке ''кода'', ''стек'' пуст.
В конце «код» пуст, в “ терме ” содержится результат. Правила перехода из состояния в состояние определяются набором инструкций машины.
Определение.
Состоянием машины называется тройка <T,C,S>, гдеT-терм как структурированное значение, например граф; C- код; S - стек или дамп (вспомогательная память).
Закон функционирования КАМ изменяет старую тройку на новую: <T, C, S>→<T|,C|,S|>.
Входной язык КАМ: <,>;Fst; Snd; Λ; ’; (,); app
КАМ – это вариант КЛ, вовлекающий ДЗК, а также техническое устройство, вычисляющее значение выражений.
Средства КЛ имеют категориальный характер, т.е. в категориях используются композиции и тождества, в декартовых категориях дополнительно вводят произведение с использованием спаривания < , > , а также проекции Snd и Fst. Декартовы замкнутые категории дополнительно содержат каррирование Λ, апплицирование и средства экспонирования, т.е. средства построения функциональных правил.