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



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

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

下面的代码片段做了我想要的,但仅适用于顶层(据我所知):

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

不确定我是否完全理解您的问题,但听起来您想逐个元素地应用函数?显然,算术函数已经在 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(申请)

这样做

的惯用方法是x f'y

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

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

最新更新