kdb:在变量列表上调用parse

kdb:在变量列表上调用parse,kdb,Kdb,我从中吸取了教训 […]在解析树中,变量由符号表示 包含其名称的。从而区分一个符号或一系列符号 必须从变量中登记该表达式 既然如此,为什么下面的表达式的计算结果是(登记;`a;`b),而不仅仅是`a`b 问因为它似乎是真的 q)parse"(a;b)" enlist `a `b 我认为你永远不会希望一个解析树将两个相同类型的值折叠成一个统一的列表,它会破坏eval解析树的功能,例如 q)a:1 q)b:1 q) q)eval parse"(a;b)" 1

我从中吸取了教训

[…]在解析树中,变量由符号表示 包含其名称的。从而区分一个符号或一系列符号 必须从变量中登记该表达式

既然如此,为什么下面的表达式的计算结果是
(登记;`a;`b)
,而不仅仅是
`a`b

问因为它似乎是真的

q)parse"(a;b)"
enlist
`a
`b

我认为你永远不会希望一个解析树将两个相同类型的值折叠成一个统一的列表,它会破坏
eval
解析树的功能,例如

q)a:1
q)b:1
q)
q)eval parse"(a;b)"
1 1
q)eval `a`b
'type
  [0]  eval `a`b
       ^
其次,
(登记;`a;`b)
登记[`a;`b]
不同,但是
(登记;`a;`b)
值是:

q)value[(enlist;`a;`b)]~enlist[`a;`b]
1b


所以我想这可以归结为
eval
value

之间的细微差别,谢谢Terry的例子-我认为这是有道理的。也觉得这跟我的另外一个问题有关系是的,有关系。解析树不应该被压平