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

tok*_*osh 2 j

我正试图解决这个问题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专家来说是可以理解的.

bob*_*bob 6

ti实际上是一个带有三个尖齿的monadic fork,都是动词.执行此操作的方式是两个外部的齿{.}.在参数上执行,2 5结果作为中间齿的左和右参数提供(* i.),这本身就是一个钩子.

在J fork中,操作通常用符号表示f,gh代表动词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
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)

  • 效价当然是理解动词如何运作的元素.从二元叉开始将评估如下:`x(fhg)y < - >(xfy)h(xgy)`所以所有的动词都是二元的.aadadic fork`(fhg)y < - >(fy)h(gy)`这里两个外齿是monadic,中间是二元.对于一个二元钩子`x(fg)y < - > xf(gy)`所以f是二元的,g是一元的.对于monadic hook`(fg)y < - > yf(gy)`和f是二元的,g是monadic.这些模式是如何持续评估叉子和钩子.你提出了一些好处. (2认同)