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