let fold_file ?(strict=true) f init file =
    try 
      try_finally_exn (fold_channel' ~file ~strict f init)
        ~fend:close_in (open_in file)
    with Error (p,m) -> raise_error (Pos.set_file p file) m