什么是相当于kdb中的Common Lisp函数(map ...)?

时间:2013-10-29 16:47:48

标签: kdb

我有一个多价kdb函数,我希望通过从每个参数(从表中获取相同长度的列表)中取一个原子并将参数应用于所述函数来连续应用。

我觉得这应该很容易,而且我遗漏了一些基本的东西,但与kdb一样,很难找到解决方案。

下面的代码片段符合我的要求但只适用于顶层(据我所知):

a:(1 2 3);
b:(1 2 3);
{a[x]*b[x]} each til count a

2 个答案:

答案 0 :(得分:2)

不确定我完全理解你的问题,但听起来你想要按元素应用函数元素?显然,算术函数已在KDB +中执行此操作,但为了说明起见:

q)a
8 1 9 5 4 6 6 1 8 5
q)b
4 9 2 7 0 1 9 2 1 8
q)f:{[x;y] x*y}
q)a,'b
8 4
1 9
9 2
5 7
4 0
6 1
6 9
1 2
8 1
5 8
q)f .' a,'b
32 9 18 35 0 6 54 2 8 40

适当的参考资料是:

http://code.kx.com/q/ref/errors/#signal(每个都是)

http://code.kx.com/q/ref/unclassified/#apply(申请)

答案 1 :(得分:0)

这样做的惯用方法是x f'y

q)a:1 2 3
q)b:1 2 3
q)a*'b
1 4 9
q)

(这对算术来说当然是多余的,但它对其他事情很有用)