为什么右动词 ] returns 值而不是左动词 [?

Why does the right verb ] returns value but not the left verb [?

这里是J新手。

动词 right ] 给出了 return 赋值结果的意思。我猜想 x =: 1 被评估并具有值 1 然后它被传递给 ] 哪个 return 是正确参数的值(或者也许是 ] 这迫使赋值)。

   ] x =: 1
1
   x
1

但它不适用于 left [。这是为什么 ?我认为将 x =: 1 放在 [ 的左侧就足够了。两者有什么区别?

   x =: 1 [
|syntax error
|   x=:    1[

此外,当我们计算下面的表达式时,控制台上没有任何反馈,赋值是默默进行的。这是为什么?

   x =: i.10 [ n =: 2
   x
0 1 2 3 4 5 6 7 8 9
   n
2

当单子应用时(即只有一个正确的参数),[] 都是动词 Same,只是 returns 它的参数不变。 x =: 1 [ 是语法错误的原因是您试图仅用一个左参数对 [ 进行二元计算(即使用两个参数)。

最后一个示例中的输出与求值顺序有关——在 J 中,这是从右到左发生的。 这意味着 x =: i.10 [ n =: 2x =: (i. (10 [ (n =: 2))) 相同,计算如下:

  1. n =: 2,即n赋值为2,则结果用于下一个动词
  2. 10 [ n,即 10 left n,也就是 10
  3. i.10,即0 1 2 3 4 5 6 7 8 9
  4. x =: 0 1 2 3 4 5 6 7 8 9

控制台没有打印任何内容,因为最后一个操作是赋值。 在这里,您可以使用 [] (monadically)除了被分配之外还打印最终结果,即

    ] x=: i.10 [ n =: 2
0 1 2 3 4 5 6 7 8 9