let list_iter_all func lst =
  catch
    (fun () ->
       list_fold_left_all (fun () x -> (func x : (unit, _) res)) () lst)
    (fun (h, t, (), e) -> fail (h, t, e))