如何在F#中获取更高阶函数的名称?

时间:2016-09-03 13:01:47

标签: reflection f#

let Sigmund () = 
    System.Reflection.MethodBase.GetCurrentMethod().Name
let Donald () = 
    System.Reflection.MethodBase.GetCurrentMethod().Name
let Eustachio () = 
    System.Reflection.MethodBase.GetCurrentMethod().Name

let get_name_of_x (x: unit -> unit) =
    //System.Reflection.???
    ()

let x = 
    [|
    Sigmund
    Donald
    Eustachio
    |]

x |> Array.iter (fun x -> x() |> printfn "%s") // prints all the names

由于函数可以看到自己的名字,我知道应该可以将函数的名称传递给get_name_of_x,但我无法弄清楚如何。有能力这样做将有助于编写我自己的测试库。

例如,

Fuchu不会直接从函数中删除名称,并且使用DU进行合成而不是使用函数会使其灵活性降低,因此可能值得改进。

0 个答案:

没有答案