是否可以在运行时获取F#函数的类型签名?

时间:2019-04-01 03:40:56

标签: types f# signature quotations

假设我定义了一个F#函数,如下所示:

let flip p = (snd p, fst p)

如果我将鼠标悬停在“ flip”上,Visual Studio会告诉我此函数的类型签名为:

'a * 'b -> 'b * 'a

有什么方法可以在运行时为任意函数获取此签名字符串吗?

GetType()上调用flip给了我.NET类型,这没有帮助。也许我可以以某种方式使用报价?例如,printfn "%A" <@flip@>给我:

Lambda (tupledArg,
        Let (arg00@, TupleGet (tupledArg, 0),
             Let (arg01@, TupleGet (tupledArg, 1),
                  Call (None, flip, [arg00@, arg01@]))))

这更接近我想要的,但显然仍然不正确。我想获得与IDE中相同的简单干净的类型签名。

0 个答案:

没有答案