首页 文章

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

提问于
浏览
1

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

我觉得这应该很简单,而且我缺少一些基本的东西,但与kdb一样,很难找到解决方案 .

下面的代码片段可以实现我想要的但只适用于顶层(据我所知):

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

2 回答

  • 0

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

  • 2

    惯用的方法是 x f'y

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

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

相关问题