我想在打印外部函数的定义时打印任何嵌套函数的函数定义。示例:
g:{sin x}
f:{cos g x}
当我打印f
时,我得到{cos g x}
,但我想得到{cos {sin x} x}
感谢您的帮助
答案 0 :(得分:4)
据我所知,无法使用内置函数来实现。
您可以尝试编写自己的函数来执行此操作,但最终会很痛苦。可能是这样的:
q)m:string[v]!string value each v:value[f][3] except `
创建字典m:
q)m
,"g"| "{sin x}"
给定函数value
后,返回包含(bytecode;parameters;locals(context;globals);constants[0];...;constants[n];definition)
的列表
但是,如果我们将symbol
传递给value
,它将返回该符号的值(在这种情况下为函数定义)。
然后,您可以使用ssr
将f
中的函数替换为存储在字典m
中的函数定义。
q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要确保您的功能稳定并适应不同的功能将非常困难。
有关value
的外观的更多详细信息,请参见:https://code.kx.com/q/ref/metadata/#value
对于ssr
,请检查以下链接:
https://code.kx.com/q/ref/strings/#ssr