在Forth中,用户可以通过定义控制流新词(除了标准中提供的:DO、LOOP、BEGIN、UNTIL、WHILE、REPEAT、LEAVE IF、THEN、ELSE、CASE、ENDCASE等)来改变语言。
是否有人常见地创建自己的新控制流词汇?有哪些典型而有用的例子?或者标准已经定义了人们实际需要的一切内容吗?
我希望找到一些被广泛接受或被证明通用的有用语言扩展示例,以使语言更加表达力。
在Forth中,用户可以通过定义控制流新词(除了标准中提供的:DO、LOOP、BEGIN、UNTIL、WHILE、REPEAT、LEAVE IF、THEN、ELSE、CASE、ENDCASE等)来改变语言。
是否有人常见地创建自己的新控制流词汇?有哪些典型而有用的例子?或者标准已经定义了人们实际需要的一切内容吗?
我希望找到一些被广泛接受或被证明通用的有用语言扩展示例,以使语言更加表达力。
这里有一个例子。 CASE
是 Forth 控制流单词集合中较晚加入的一个。 1980 年初,Forth Dimensions 宣布了一个定义最佳 CASE 语句的竞赛。那一年晚些时候,由于三个参赛作品并列,该竞赛以平局结束。其中之一最终被收录进入了 Forth94 标准。
: (0-2)=> PRO 3 0 DO I CONT LOOP ; \ generator
: test (0-2)=> CR . ." : " (0-2)=> . ;
test CR
输出:
0 : 0 1 2
1 : 0 1 2
2 : 0 1 2
PRO
和CONT
是特殊的控制流词。 PRO
指定生成器词,而CONT
调用使用者 - 这有点像Ruby或ECMAScript中的yield
。 BacFORTH还定义了许多其他特殊单词。〜profit / lib / bac4th.f
库)。