(kdb+/q) 附加到字典

(kdb+/q) append to dictionary

我正在尝试以编程方式为 functional select 调用构造具有以下形式的参数:

?[ `t; () ; groupBy; ()]

有问题的部分是groupBy,应该是字典。

假设 objective 以以下形式到达解析树:

parse "select by sym,month:`date$dt.month from t"

我开始构建 by 部分:

groupBy: enlist[`sym]!enlist(`sym)

然后我尝试通过语句附加组的 month 部分(注意周期性已参数化):

per: `month / monthly periodicity
groupBy,: {enlist[x]!enlist[ $[x = `day; 
                               `dt; 
                               $[x=`month;
                                 ((parse "select by month:`date$dt.month from x")@3)@`month
                                 ;` sv (`dt,x)]
                               ]]
          }[per]

但是,这会引发 type 错误。出了什么问题?

我认为它不喜欢复合赋值

groupBy,:{...} 

尝试

groupBy:groupBy,{...}

不同之处在于,在第一种情况下,它试图在不创建副本的情况下直接更改内存中的数据,而在第二种情况下,它在内存中创建数据的副本,然后将其重新分配给多变的。也许复合赋值只有在类型统一时才有效