Необходимость оператора "гниения"

Почему Forth реализует rot оператор, и почему он работает именно на трех самых верхних элементов стека?

Это просто для удобства или Форт не будет полным по Тьюрингу без такой инструкции? Является ли число три минимальным жизнеспособным вариантом для завершения Тьюринга?

Я могу представить, что можно реализовать rot с pick или же roll, Так что, если бы не было ни одной из этих трех операций, было бы это все же завершено по Тьюрингу?

2 ответа

Эта тема не имеет никакого отношения к полноте по Тьюрингу.

rot операция только для удобства и эффективности. Это можно определить с помощью swap:

: rot ( a b c -- b c a ) >R SWAP R> SWAP ;

pick а также roll также может быть реализован с использованием стека возврата (эти >R а также R> операции), или любой другой стек.

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

Взгляните на какой-нибудь минимальный FORTH, такой как jonesforth или lbForth (оба являются git-репозиториями). Это довольно удивительно, как мало с точки зрения примитивов требуется, чтобы оторваться от земли.

Другие вопросы по тегам