@@ -449,17 +449,7 @@ module List =
449449match lwith
450450| [] -> false
451451| h:: t-> LanguagePrimitives.PhysicalEquality x h|| memq x t
452-
453- // must be tail recursive
454- let mapFold ( f : 'a -> 'b -> 'c * 'a ) ( s : 'a ) ( l : 'b list ) : 'c list * 'a =
455- match lwith
456- | [] -> [], s
457- | [ h] -> let f = OptimizedClosures.FSharpFunc<_,_,_>. Adapt( f)
458- let h ' , s' = f.Invoke( s, h)
459- [ h'], s'
460- | _ ->
461- List.mapFold f s l
462-
452+
463453// Not tail recursive
464454let rec mapFoldBack f l s =
465455match lwith
@@ -487,7 +477,7 @@ module List =
487477| x:: xs-> fhead x:: List.map ftail xs
488478
489479let collectFold f s l =
490- let l , s = mapFold f s l
480+ let l , s = List. mapFold f s l
491481 List.concat l, s
492482
493483let collect2 f xs ys = List.concat( List.map2 f xs ys)
@@ -496,7 +486,7 @@ module List =
496486let iterSquared f xss = xss|> List.iter( List.iter f)
497487let collectSquared f xss = xss|> List.collect( List.collect f)
498488let mapSquared f xss = xss|> List.map( List.map f)
499- let mapFoldSquared f z xss = mapFold( mapFold f) z xss
489+ let mapFoldSquared f z xss = List. mapFold( List. mapFold f) z xss
500490let forallSquared f xss = xss|> List.forall( List.forall f)
501491let mapiSquared f xss = xss|> List.mapi( fun i xs -> xs|> List.mapi( fun j x -> f i j x))
502492let existsSquared f xss = xss|> List.exists( fun xs -> xs|> List.exists( fun x -> f x))