首页 > 解决方案 > 是否可以在运行时获取 F# 函数的类型签名?

问题描述

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

let flip p = (snd p, fst p)

如果我将鼠标悬停在“翻转”上,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 中相同的简单、干净的类型签名。

标签: typesf#signaturequotations

解决方案


推荐阅读