John Hayes的ANS Forth测试套件包含如下所示的测试:
: WEIRD: CREATE DOES> 1 + DOES> 2 + ;
WEIRD: W1
W1
Run Code Online (Sandbox Code Playgroud)
我真的不知道应该做些什么.所述ANS第四规格上DOES>是基本上不可穿透.
从阅读测试套件看,它似乎期望第一次调用DOES>修改W1,但然后该调用W1激活第二次 调用DOES>.我假设第二个对最近一次调用所定义的单词进行操作CREATE,但是已经有了这个DOES>,所以我不确定应该做什么.
gforth通过了测试套件,因此测试看起来确实有效; 但我的宠物Forth翻译没有,我需要弄清楚如何让它工作......
第二次调用DOES>也会修改W1.
WEIRD:W1使用的运行时动作创建1 + DOES> 2 +.第一次调用W1将运行时设置为2 +.
如果您更改代码以打印某些内容,则会更加明显,例如
: weird: create does> drop ." ONE" does> drop ." TWO" ; ok
weird: w1 ok
w1 ONE ok
w1 TWO ok
w1 TWO ok
w1 TWO ok
Run Code Online (Sandbox Code Playgroud)
对此的解释是DOES>始终对最新定义的单词进行操作.