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进行合成而不是使用函数会使其灵活性降低,因此可能值得改进。