我正在尝试以编程方式构造具有以下形式的functional select调用的参数:
?[ `t; () ; groupBy; ()]
有问题的部分是groupBy
,它应该是字典。
假设目标是以以下形式到达解析树:
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
错误。出了什么问题?
答案 0 :(得分:2)
我认为它不喜欢复合作业
groupBy,:{...}
尝试
groupBy:groupBy,{...}
不同之处在于,在第一种情况下,它试图直接改变存储器中的数据而不创建副本,而在第二种情况下,它在内存中创建数据的副本,然后将其重新分配给该变量。也许复合赋值仅在类型均匀时才有效