参数用法:ti=.{.(*i.)}

Argument Usage: ti=.{.(*i.)}

我正在努力让自己的头脑清醒过来 J。在 easy-j.pdf(可用 here;第 19 页)介绍中有这个钩子:

ti=.{.(*i.)}.     NB. ti=times index generator
ti 2 5            NB. Usage

我理解上一个词:2(*i.)5 NB. 2 times 0 1 2 3 4

我可以 understand/imagine }. 从参数列表(2 5 以上)中获取最后一个元素来创建 (*i.)5。但是,是什么让 clear/obvious 以某种方式将参数列表也传递给 {. 以检索 2(根据我目前的理解,该参数已被 }. 使用)?

希望 J 专家能够理解这个问题。

ti 实际上是一个单分叉,三个尖齿都是动词。执行的方式是两个外部齿 {.}. 在参数 2 5 上执行,结果作为中间齿 [=] 的左右参数馈送16=],它本身就是一个钩子。

在 J 中,fork 操作通常用 fgh 表示动词,xy 表示左右参数叉子的评估如下:

(f h g) y <-> (f y) h (g y) NB. <-> is a meta symbol for equivalency - not J symbols

在这种情况下 f y{. 2 5g y}. 2 5

  {. 2 5
2
   }. 2 5
5

叉子的中间叉齿始终是二叉的,因为它由两个外侧叉齿进料,中间的叉钩 (* i.) 的构造是

x (f g) y <-> x f (g y)


   2 (* i.) 5  NB. 2 * (i. 5)
0 2 4 6 8