q - 压缩时应用任意函数
q - Applying arbitrary function while zipping
在 q 中,双向 zip 操作由 '
完成。即
l1:("a1";"a2")
l2:("b1";"b2")
(l1,'l2)~("a1b1";"a2b2")
我将此 '
解析为二元运算符 '[g;l2]
,其中 g
是列表上某些二元函数到一元函数的投影,例如g:,[l1;]
。
所以如果我们想在压缩操作期间执行除,
之外的任何其他映射,我会重新定义g
。
但是,'[g;l2]
没有给我预期的列表输出,而是 returns func
问题是:如何在压缩过程中应用任意贴图?例如。我如何做类似 l1 f' l2
的事情,在示例 f:,
中,但通常 f
某些二元运算符用于列表项?
感谢您的帮助
how do I apply arbitrary maps during the zipping operation?
像这样:
q)f:{x+y}
q)f'[10*x;x:til 5]
0 11 22 33 44
如果你喜欢中缀符号,你也可以这样做
q)(10*x) f' til 5
0 11 22 33 44
请注意 '[g;l1]
是 composition。如果要创建投影,请执行
q)g:,'[l1;]
q)g l2
"a1b1"
"a2b2"
在 q 中,双向 zip 操作由 '
完成。即
l1:("a1";"a2")
l2:("b1";"b2")
(l1,'l2)~("a1b1";"a2b2")
我将此 '
解析为二元运算符 '[g;l2]
,其中 g
是列表上某些二元函数到一元函数的投影,例如g:,[l1;]
。
所以如果我们想在压缩操作期间执行除,
之外的任何其他映射,我会重新定义g
。
但是,'[g;l2]
没有给我预期的列表输出,而是 returns func
问题是:如何在压缩过程中应用任意贴图?例如。我如何做类似 l1 f' l2
的事情,在示例 f:,
中,但通常 f
某些二元运算符用于列表项?
感谢您的帮助
how do I apply arbitrary maps during the zipping operation?
像这样:
q)f:{x+y}
q)f'[10*x;x:til 5]
0 11 22 33 44
如果你喜欢中缀符号,你也可以这样做
q)(10*x) f' til 5
0 11 22 33 44
请注意 '[g;l1]
是 composition。如果要创建投影,请执行
q)g:,'[l1;]
q)g l2
"a1b1"
"a2b2"