exception ArrayZuKurz let links x = x / 2 ;; let rechts x = truncate (ceil ((float_of_int x) /. 2.)) ;; let rec fold_balanced f a = let laenge = Array.length a in if laenge = 0 then raise ArrayZuKurz else if laenge = 1 then Array.get a 0 else let (links,rechts) = ( Array.sub a 0 (links laenge), Array.sub a (laenge/2) (rechts laenge) ) in f (fold_balanced f links) (fold_balanced f rechts) ;;