1

为什么 Forth 实现了rot操作符,为什么它只对栈顶的三个项目进行操作?

是否只是为了方便,或者如果没有这样的指令,Forth 就不是图灵完备的?三的数量是图灵完备的最小可行选项吗?

我可以想象一个可以rotpickor来实现roll。那么如果这三个操作都没有,那它仍然是图灵完备的吗?

4

2 回答 2

7

这个话题与图灵完备性完全无关。

rot操作只是为了方便和效率。可以使用以下方式定义swap

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

pick并且roll也可以使用返回堆栈(这些>RR>操作)或任何其他堆栈来实现。

堆栈可以使用内存访问字来实现。

于 2017-02-26T09:55:47.653 回答
0

看看一些最小的 FORTH,比如jonesforthlbForth(两者都是 git 存储库)。令人惊讶的是,在原语方面只需要很少的东西就可以起步。

于 2018-05-04T16:23:07.753 回答