(* In the toplevel, type #load "topfind" #require "functory" *) open Functory.Cores let () = Functory.Control.set_debug true let () = set_number_of_cores 4;; let op = fun (mss,mis,mcs,ts) -> fun (mss',mis',mcs',ts') -> max mss (max mss' (mcs+mis')), max mis (ts+mis'), max mcs' (mcs+ts'), ts+ts';; let f x = (max 0 x, max 0 x, max 0 x, x);; (* sequential let mss l = let (v,_,_,_) = List.fold_left op (0,0,0,0) (List.map f l) in v;; *) (* parallel *) let mss l = let (v,_,_,_) = map_local_fold ~f:f ~fold:op (0,0,0,0) l in v;; Printf.printf "Mss is %d\n%!" (mss [2;-4;2;-1;6;-3]);;