在 Forth 中,可以使用单独的浮点堆栈进行除法和乘法运算。计算 3/4 的典型示例是:
3.e 4.e f/ f.
0.75 ok
这是0.75。但是,如果计算是在一个单词中完成的,使用局部变量会发生什么呢?
: calc { a b }
a b f/ f.
;
3.e 4.e calc
:2: Stack underflow
3.e 4.e >>>calc<<<
Backtrace:
$7FDF1C7C1220 >l
看起来,Forth 期望整数堆栈中的值是空的,因为在函数调用之前,变量被放入了浮动堆栈。问题是如何以某种方式修改计算字,即局部变量取自浮点堆栈?