为什么右动词 ] 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 =: 2
与 x =: (i. (10 [ (n =: 2)))
相同,计算如下:
n =: 2
,即n
赋值为2,则结果用于下一个动词
10 [ n
,即 10 left n
,也就是 10
i.10
,即0 1 2 3 4 5 6 7 8 9
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
这里是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 =: 2
与 x =: (i. (10 [ (n =: 2)))
相同,计算如下:
n =: 2
,即n
赋值为2,则结果用于下一个动词10 [ n
,即 10 leftn
,也就是 10i.10
,即0 1 2 3 4 5 6 7 8 9
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