Проблема в том, что ваша функция времени ожидает функцию с одним аргументом, но вы вызываете ее с функцией с двумя аргументами:
time Array.iter (fun x -> ...) [|1..40|]
^- first arg ^- second arg
Чтобы получить желаемый результат, используйте скобки
time (Array.iter (fun x -> ignore (fib x) )) [| 1 .. 40 |]
^- a single partially curried function ^- a single argument
Например, в FSI:
> time ( Array.iter (fun x -> ignore (fib x) ) ) [| 1 .. 40 |];;
Took 6589msval it : unit = ()
Еще лучше, если вы тестируете в F # интерактиве, используйте директиву #time
, и FSI подберет время для вас.
Пример:
> #time;;
--> Timing now on
> Array.iter (fun x -> ignore (fib x) ) [| 1 .. 40 |];;
Real: 00:00:06.816, CPU: 00:00:06.218, GC gen0: 0, gen1: 0, gen2: 0
val it : unit = ()