konto usunięte
Temat: F# Operatory
Ucząc się F# stworzyłem sobie małą pomoc którą używam do testów wydajnościowych (gdyż na tym etapie interesuje mnie wydajność tego języka)
/// Measures time taken to execute a function
let (%%%) func p =
let time = new System.Diagnostics.Stopwatch();
time.Start();
let result = func p;
time.Stop();
time.ElapsedMilliseconds;
w F# wszystko jest funkcją więc i operatory także, co sprawia że pozwala to nam na dokonanie całkiem niesamowitych rzeczy.
Oto wywołanie naszego operatora.
//a function that returns int.
let sum (a, b, c) = a + b + c
printfn "%A" ((%%%) sum (2,3,4))
//a function that returns unit (void)
let display text = printfn "Display:::%s" text
printfn "%A" ((%%%) display "Hello There")
a tak wygląda w C# jeśli to kogoś interesuje :-)
[CompilationArgumentCounts(new int[] { 1, 1 })]
public static long op_PercentPercentPercent<a, b>
(FSharpFunc<a, b> func, a p)
{
Stopwatch time = new Stopwatch();
time.Start();
b result = func.Invoke(p);
time.Stop();
return time.ElapsedMilliseconds;
}