无法评估手动创建的等价 ~ 解析树
Could not evaluate manually created equial ~ parse tree
人工创建的解析树和parse
操作的结果怎么可能相等:
q)t:([]date:.z.d+til 5;ccy:5#`EUR`CAN`AUS;fx:5?(1.0 0.1))
q)@[;`date;1+]t
date ccy fx
------------------
2020.11.01 EUR 0.1
2020.11.02 CAN 1
2020.11.03 AUS 0.1
2020.11.04 EUR 1
2020.11.05 CAN 0.1
q)parse"@[;`date;1+]t"
(@;::;,`date;(+;1))
`t
q)eval parse"@[;`date;1+]t"
date ccy fx
------------------
2020.11.01 EUR 0.1
2020.11.02 CAN 1
2020.11.03 AUS 0.1
2020.11.04 EUR 1
2020.11.05 CAN 0.1
q)((@;::;(),`date;(+;1));`t) ~ parse"@[;`date;1+]t"
1b
q)eval ((@;::;(),`date;(+;1));`t)
'date
[0] eval ((@;::;(),`date;(+;1));`t)
^
并且无法通过 eval
?
计算相同的表达式
我想我错过了什么,但是什么?
更新:
这种做法是否正确?:
eval over ((@;;(),`date;(+;1));`t)
投影中的占位符恰好具有类型 101h(与标识相同)但在内部它们是不同的
q)type(parse"+[;2]")1
101h
q)type(parse"+[::;2]")1
101h
q)
q)null(parse"+[::;2]")1
1b
q)null(parse"+[;2]")1
0b
对于单个省略项,我会使用 value
解析投影或应用然后评估解析树
q)value((@;;(),`date;(+;1));`t)
@
`t
,`date
(+;1)
q)
q)(@).((@;;(),`date;(+;1));`t)
@
`t
,`date
(+;1)
人工创建的解析树和parse
操作的结果怎么可能相等:
q)t:([]date:.z.d+til 5;ccy:5#`EUR`CAN`AUS;fx:5?(1.0 0.1))
q)@[;`date;1+]t
date ccy fx
------------------
2020.11.01 EUR 0.1
2020.11.02 CAN 1
2020.11.03 AUS 0.1
2020.11.04 EUR 1
2020.11.05 CAN 0.1
q)parse"@[;`date;1+]t"
(@;::;,`date;(+;1))
`t
q)eval parse"@[;`date;1+]t"
date ccy fx
------------------
2020.11.01 EUR 0.1
2020.11.02 CAN 1
2020.11.03 AUS 0.1
2020.11.04 EUR 1
2020.11.05 CAN 0.1
q)((@;::;(),`date;(+;1));`t) ~ parse"@[;`date;1+]t"
1b
q)eval ((@;::;(),`date;(+;1));`t)
'date
[0] eval ((@;::;(),`date;(+;1));`t)
^
并且无法通过 eval
?
我想我错过了什么,但是什么?
更新: 这种做法是否正确?:
eval over ((@;;(),`date;(+;1));`t)
投影中的占位符恰好具有类型 101h(与标识相同)但在内部它们是不同的
q)type(parse"+[;2]")1
101h
q)type(parse"+[::;2]")1
101h
q)
q)null(parse"+[::;2]")1
1b
q)null(parse"+[;2]")1
0b
对于单个省略项,我会使用 value
解析投影或应用然后评估解析树
q)value((@;;(),`date;(+;1));`t)
@
`t
,`date
(+;1)
q)
q)(@).((@;;(),`date;(+;1));`t)
@
`t
,`date
(+;1)