我正在与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