kdb-打印外部函数体时解析嵌套函数

kdb-打印外部函数体时解析嵌套函数,kdb,Kdb,在打印外部函数的定义时,我想打印任何嵌套函数的函数定义。例如: g:{sin x} f:{cos g x} 当我打印f时,我得到{cos g x}但我想得到{cos{sin x}x} 感谢您的帮助据我所知,使用内置功能无法实现这一点 您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的: q)m:string[v]!string value each v:value[f][3] except ` 它创建了一个字典m: q)m ,"g"| "{sin x}" 当给定一个函数时,

在打印外部函数的定义时,我想打印任何嵌套函数的函数定义。例如:

g:{sin x}
f:{cos g x}
当我打印
f
时,我得到
{cos g x}
但我想得到
{cos{sin x}x}


感谢您的帮助

据我所知,使用内置功能无法实现这一点

您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的:

q)m:string[v]!string value each v:value[f][3] except `
它创建了一个字典m:

q)m
,"g"| "{sin x}"
当给定一个函数时,
返回一个列表,其中包含
(字节码;参数;局部变量(上下文;全局变量);常量[0];…;常量[n];定义)

但是,如果我们将
符号
传递给
,它将返回该符号的值(在本例中为函数定义)

然后,您可以使用
ssr
f
中的函数替换为字典
m
中存储的函数定义

q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要确保您的函数是稳定的,并且能够适应不同的函数是非常困难的

有关
value
的详细信息,请查看以下内容:

对于
ssr
检查此链接:

据我所知,使用内置功能无法实现这一点

您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的:

q)m:string[v]!string value each v:value[f][3] except `
它创建了一个字典m:

q)m
,"g"| "{sin x}"
当给定一个函数时,
返回一个列表,其中包含
(字节码;参数;局部变量(上下文;全局变量);常量[0];…;常量[n];定义)

但是,如果我们将
符号
传递给
,它将返回该符号的值(在本例中为函数定义)

然后,您可以使用
ssr
f
中的函数替换为字典
m
中存储的函数定义

q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要确保您的函数是稳定的,并且能够适应不同的函数是非常困难的

有关
value
的详细信息,请查看以下内容:

对于
ssr
检查此链接:

注意-您的
值[f][9]
是特定于版本的。值仅返回v3.4及更早版本中的5项<代码>最后一个可能暂时有效,但可能会发生更改注意-您的
值[f][9]
是特定于版本的。值仅返回v3.4及更早版本中的5项<代码>最后一个可能暂时有效,但可能会发生更改