diff --git a/src/fsharp/FSharp.Core/list.fs b/src/fsharp/FSharp.Core/list.fs index 6b31ea2b0f..45eccc3f3a 100644 --- a/src/fsharp/FSharp.Core/list.fs +++ b/src/fsharp/FSharp.Core/list.fs @@ -216,11 +216,10 @@ namespace Microsoft.FSharp.Collections | [] -> state | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(folder) - let rec loop s xs = - match xs with - | [] -> s - | h::t -> loop (f.Invoke(s,h)) t - loop state list + let mutable acc = state + for x in list do + acc <- f.Invoke(acc, x) + acc [] let pairwise (list: 'T list) =