我正试图解决这个问题J.在easy-j.pdf(可在这里 ;第19页)介绍中有这个钩子:
ti=.{.(*i.)}. NB. ti=times index generator
ti 2 5 NB. Usage
Run Code Online (Sandbox Code Playgroud)
我理解上一学期: 2(*i.)5 NB. 2 times 0 1 2 3 4
我可以理解/想象}.从参数列表(上面2 5)中创建的最后一个元素(*i.)5.但是什么使得明确/显而易见的是,参数列表也以某种方式传递{.给检索2(在我目前的理解中,参数已经被使用了}.)?
我希望这个问题对J专家来说是可以理解的.
ti实际上是一个带有三个尖齿的monadic fork,都是动词.执行此操作的方式是两个外部的齿{.并}.在参数上执行,2 5结果作为中间齿的左和右参数提供(* i.),这本身就是一个钩子.
在J fork中,操作通常用符号表示f,g并h代表动词x和y表示左右参数和分支,如下所示:
(f h g) y <-> (f y) h (g y) NB. <-> is a meta symbol for equivalency - not J symbols
在这种情况下f y是{. 2 5和g y是}. 2 5
{. 2 5
2
}. 2 5
5
Run Code Online (Sandbox Code Playgroud)
叉子的中间叉总是二元的,因为它是从两个外侧叉齿进给的(* i.),并且中心的二元钩的构造是
x (f g) y <-> x f (g y)
2 (* i.) 5 NB. 2 * (i. 5)
0 2 4 6 8
Run Code Online (Sandbox Code Playgroud)