如何将扫描的初始值设置为列表?
How do I set initial value of a scan to be a list?
我正在尝试做:
(.5 .5) (+\) (.9 .2;.4 .1)
预期结果:
1.4 0.7
1.8 0.8
但我得到的是 'type
。
我似乎无法使用列表作为最左边的参数。我做错了什么?
q)(+\)[0.5 0.5;(.9 .2;.4 .1)]
1.4 0.7
1.8 0.8
你的表达式在没有括号的情况下工作正常:
q).5 .5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
如您所见,您可以使用列表作为左参数。但是标量扩展意味着您不需要。
q).5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
说明
您想要列表中的累计金额:
q)sums (.9 .2;.4 .1)
0.9 0.2
1.3 0.3
然后是一些:
q).5 + sums (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
但是您已经对此进行了更深入的了解。 sums
是派生函数 Add Scan +\
的语法糖。派生函数是 variadic - 可以作为一元或二进制应用 - sums
仅适用于一元应用。当 Add Scan 作为二进制应用时,它的左参数是一个初始值。
q).5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
当正确的参数是一个长列表时,指定一个初始值比之后将其添加到每个累积和更有效。
q)show L:1000000?1.
0.3927524 0.5170911 0.5159796 0.4066642 0.1780839 0.3017723 0.785033 0.5347096 0.711171..
q)\ts:1000 .5+sums L
2360 16777472
q)\ts:1000 .5+\ L
1477 8388880
那些括号
如前所述,派生函数 +\
是可变的。
q)5+ 2 3 / +\ applied as a binary
6 8 11
要将其作为一元应用,请使用括号表示法 +\[1 2 3]
或在括号中“捕获”它。直接效果是阻止它的应用。您现在有一个数据项。它具有“名词语法”,可以作为参数传递。
q)type(+\)
108h
但是 q 语法允许您通过并列来应用名词。
对于名词 N
,N x
等价于 N@x
或 N[x]
.
q)"abc" 2 0
"ca"
q)til 3
0 1 2
q)(+\)1 2 3 / +\ applied as a unary
1 3 6
我正在尝试做:
(.5 .5) (+\) (.9 .2;.4 .1)
预期结果:
1.4 0.7
1.8 0.8
但我得到的是 'type
。
我似乎无法使用列表作为最左边的参数。我做错了什么?
q)(+\)[0.5 0.5;(.9 .2;.4 .1)]
1.4 0.7
1.8 0.8
你的表达式在没有括号的情况下工作正常:
q).5 .5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
如您所见,您可以使用列表作为左参数。但是标量扩展意味着您不需要。
q).5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
说明 您想要列表中的累计金额:
q)sums (.9 .2;.4 .1)
0.9 0.2
1.3 0.3
然后是一些:
q).5 + sums (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
但是您已经对此进行了更深入的了解。 sums
是派生函数 Add Scan +\
的语法糖。派生函数是 variadic - 可以作为一元或二进制应用 - sums
仅适用于一元应用。当 Add Scan 作为二进制应用时,它的左参数是一个初始值。
q).5 +\ (.9 .2;.4 .1)
1.4 0.7
1.8 0.8
当正确的参数是一个长列表时,指定一个初始值比之后将其添加到每个累积和更有效。
q)show L:1000000?1.
0.3927524 0.5170911 0.5159796 0.4066642 0.1780839 0.3017723 0.785033 0.5347096 0.711171..
q)\ts:1000 .5+sums L
2360 16777472
q)\ts:1000 .5+\ L
1477 8388880
那些括号
如前所述,派生函数 +\
是可变的。
q)5+ 2 3 / +\ applied as a binary
6 8 11
要将其作为一元应用,请使用括号表示法 +\[1 2 3]
或在括号中“捕获”它。直接效果是阻止它的应用。您现在有一个数据项。它具有“名词语法”,可以作为参数传递。
q)type(+\)
108h
但是 q 语法允许您通过并列来应用名词。
对于名词 N
,N x
等价于 N@x
或 N[x]
.
q)"abc" 2 0
"ca"
q)til 3
0 1 2
q)(+\)1 2 3 / +\ applied as a unary
1 3 6