【发布时间】:2015-05-24 19:49:49
【问题描述】:
为什么2(*i.)5 的计算结果为0 2 4 6 8?
很明显2*i.5 确实如此,但() 创建了一个钩子并从右到左进行评估,似乎我们得到了
(*i.)5 == 0 5 10 15 20
并且 2 不会对该列表采取行动 - 那么我哪里出错了?
【问题讨论】:
标签: j tacit-programming
为什么2(*i.)5 的计算结果为0 2 4 6 8?
很明显2*i.5 确实如此,但() 创建了一个钩子并从右到左进行评估,似乎我们得到了
(*i.)5 == 0 5 10 15 20
并且 2 不会对该列表采取行动 - 那么我哪里出错了?
【问题讨论】:
标签: j tacit-programming
2 (* i.) 5,是一个二元钩子,翻译成2 * (i. 5)。
(* i.) 5,是一个单子钩子,翻译成5 * (i. 5)。
二元钩子x (u v) y等价于x u (v y),与x u v y相同。
一元钩子(u v) y等价于y u (v y),与y u v y相同。
【讨论】:
x (u v) y x u (v y) 用于二元挂钩。
一种用途可能是将 y 重塑为形状 x,如下所示 http://www.jsoftware.com/jwiki/Vocabulary/hook
[t=.i. 3 2
0 1
2 3
4 5
2 3 ($ ,) t
0 1 2
3 4 5
【讨论】: