我正在与Factor一起玩,试图对级联编程有所了解。用一个单词平方一个数字很简单:

: square ( n -- n ) dup * ;

但是对于我的一生,我似乎无法弄清楚如何对数字求立方:
: cube ( n -- n ) * * ;  ! Form a

无效,因为推断的堆栈效果是( x x x -- x )
: cube ( n -- n ) dup * * ; ! Form b

也失败了。

如果我要对多维数据集进行硬编码,我将执行以下操作:
3 3 * 3 *

这就是为什么我幼稚的猜测将是形式b。

正如我所说的,我只是和Factor一起玩,很想知道我在这里想念的东西,但这主要是出于我的好奇心。

最佳答案

有一个内置的词:

IN: scratchpad 3 3 ^ .
27

或者,如果您想自己写这个词:
: pow ( x n -- y ) 1 - over '[ _ * ] times ;
IN: scratchpad 5 3 pow .
125

您也可以使用cube来制定square:
: cube ( n -- n' ) dup square * ;
IN: scratchpad 6 cube .
216

10-08 09:42