let fold2_exn t1 t2 ~init ~f =     let lgth1 = (length t1) in     let lgth2 = (length t2) in     match lgth1, lgth2 with     | 0, 0 -> init     | _, _ when lgth1 <> lgth2 -> failwith "fold2_exn"     | lgth1, lgth2 ->        let res = ref init in        for i = 0 to lgth1 - 1 do          res := f !res t1.[i] t2.[i];        done;        !res