Fib.fib 5;; Fib.fib 20;; Fib.fib 30;; Fib.fib 40;; Fib.fib 5;; #trace Fib.fib;; Fib.fib 5;; Fib.fib 40;; Fib.fibpair 40;; Fib.fibpair 400;; Fib.fibpair 4000;; Fib.fibpair 40000;; Fib.fibpair 400000;; let xs = IntLst.range 1 100000;; let average xs = IntLst.sum xs / Lst.length xs;; average xs;; Profiler.run average xs;; let rec sumlen = function | [] -> (0,0) | x::xs -> let (sum,len) = sumlen xs in (sum+x,len+1);; let average1 xs = let (sum,len) = sumlen xs in sum/len;; Profiler.run average1 xs;; let rec sum n = if n <= 0 then 0 else n + sum (n-1);; sum 1000000;; sum 100000;; let sumlen_tl xs = let rec sumlen sum len = function | [] -> (sum,len) | x::xs -> sumlen (sum+x) (len+1) xs in sumlen 0 0 xs;; sumlen_tl [1;2;3;4];; sumlen_tl (IntLst.range_tl 1 1000000);; sumlen (IntLst.range_tl 1 1000000);; let range_strange m n = let rec range acc m n = if m >= n then acc else range (m::acc) (m+1) n in range [] m n;; range_strange 1 10;; let rec reverse = function | [] -> [] | x::xs -> reverse xs @ [x];; reverse (IntLst.range_tl 1 1000000);; Lst.rev (IntLst.range_tl 1 1000000);; reverse (IntLst.range_tl 1 1000000);; reverse (IntLst.range_tl 1 100000);;