我不明白 Factor 的functors。我想首先了解什么是“函子”会有所帮助。
谷歌说:
一个函数;一个运营商。
在 Factor 中,所有函数(单词)都是运算符,并且是一等的。(事实上,我想不出很多不是头等舱的因素)。这个定义不是很有帮助。
维基百科说:
函子可以指:
- ...
- 在计算机编程中:
- 用于传递函数指针及其状态的函数对象
- ...
- 在 Haskell 中,Functor 描述了执行映射操作的函数的泛化
“功能对象”的页面说:
像普通函数一样被调用或调用的对象,通常使用相同的语法(函数参数也可以是函数)。
那么函子是一等函数吗?这没什么特别的,反正文字和引文之类的东西在Factor中已经是一流的了。
因子函子有奇怪的语法,让我想起泛型或其他东西。
资源:unmaintained/models/combinators/templates/templates.factor:
FROM: models.combinators => <collection> #1 ;
FUNCTOR: fmaps ( W -- )
W IS ${W}
w-n DEFINES ${W}-n
w-2 DEFINES 2${W}
w-3 DEFINES 3${W}
w-4 DEFINES 4${W}
w-n* DEFINES ${W}-n*
w-2* DEFINES 2${W}*
w-3* DEFINES 3${W}*
w-4* DEFINES 4${W}*
WHERE
MACRO: w-n ( int -- quot ) dup '[ [ _ narray <collection> ] dip [ _ firstn ] prepend W ] ;
: w-2 ( a b quot -- mapped ) 2 w-n ; inline
: w-3 ( a b c quot -- mapped ) 3 w-n ; inline
: w-4 ( a b c d quot -- mapped ) 4 w-n ; inline
MACRO: w-n* ( int -- quot ) dup '[ [ _ narray <collection> #1 ] dip [ _ firstn ] prepend W ] ;
: w-2* ( a b quot -- mapped ) 2 w-n* ; inline
: w-3* ( a b c quot -- mapped ) 3 w-n* ; inline
: w-4* ( a b c d quot -- mapped ) 4 w-n* ; inline
;FUNCTOR
这些文档非常稀少。这些是什么?我应该什么时候使用它们?