首页 > 解决方案 > 参数用法:ti=.{.(*i.)}

问题描述

我正在努力解决问题J。在easy-j.pdf(可在此处获得;第 19 页)介绍中有这个钩子:

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

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

我可以理解/想象}.从参数列表(上图)中获取最后一个元素2 5来创建(*i.)5. 但是,是什么让参数列表也以某种方式传递{.给检索2(在我目前的理解中,参数已经被 使用}.)清楚/明显?

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

标签: j

解决方案


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

在 J 中,fork 操作通常用和来表示,代表动词,fand代表左右参数,fork 的计算方式如下:ghxy

(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

推荐阅读