为什么 Forth 实现了rot
操作符,为什么它只对栈顶的三个项目进行操作?
是否只是为了方便,或者如果没有这样的指令,Forth 就不是图灵完备的?三的数量是图灵完备的最小可行选项吗?
我可以想象一个可以rot
用pick
or来实现roll
。那么如果这三个操作都没有,那它仍然是图灵完备的吗?
为什么 Forth 实现了rot
操作符,为什么它只对栈顶的三个项目进行操作?
是否只是为了方便,或者如果没有这样的指令,Forth 就不是图灵完备的?三的数量是图灵完备的最小可行选项吗?
我可以想象一个可以rot
用pick
or来实现roll
。那么如果这三个操作都没有,那它仍然是图灵完备的吗?
这个话题与图灵完备性完全无关。
rot
操作只是为了方便和效率。可以使用以下方式定义swap
:
: rot ( a b c -- b c a ) >R SWAP R> SWAP ;
pick
并且roll
也可以使用返回堆栈(这些>R
和R>
操作)或任何其他堆栈来实现。
堆栈可以使用内存访问字来实现。
看看一些最小的 FORTH,比如jonesforth或lbForth(两者都是 git 存储库)。令人惊讶的是,在原语方面只需要很少的东西就可以起步。