【发布时间】:2017-04-29 15:05:39
【问题描述】:
如何提取和操作 lambda/函数的解析树?
例如给定函数
pair:{` sv x,y}'
我想使用名为inverse 的组合子来获得“逆”版本,以便返回以下调用(注意现在交换的x 和y 的顺序):
q)inverse pair
{` sv y,x}'
以下适用于嵌入式 q 函数和 qsql,但不适用于用户定义的 lambda:
q)-3!parse "mavg"
"k){msum[x;0.0^y]%mcount[x;y]}"
q)-3!parse "select avg foo,sum bar by blah from myTable"
"(?;`myTable;();(,`blah)!,`blah;`foo`bar!((avg;`foo);(sum;`bar)))"
q) parse "pair"
`pair
q)-3!parse string pair
"(';{` sv x,y})"
谢谢
【问题讨论】: