diff --git a/convert.ml b/convert.ml
index efb13e6ff8367432b8087f766dc4a914db5a02f6..8716e69ecc622821e9b2d45b01acb827b95fa998 100644
--- a/convert.ml
+++ b/convert.ml
@@ -1853,12 +1853,10 @@ and make_assign_cap env cap =
 
 (* For a given lambda instance, initialize all overloaded call operators. *)
 and init_lambda_overloads env aux lam_name lam_type overloads closures =
-  match overloads with
-  | [] -> (env, aux)
-  | ovl::overloads ->
-    let (env, aux) =
-      init_lambda_single_overload env aux lam_name lam_type ovl closures in
-      init_lambda_overloads env aux lam_name lam_type overloads closures
+  let init_one (env, aux) ovl =
+    init_lambda_single_overload env aux lam_name lam_type ovl closures
+  in
+  List.fold_left init_one (env,aux) overloads
 
 (* For a given lambda instance, initialize one overloaded call operator.
    This is called once for a C++11 lambda and once or more for a C++14 generic