@@ -113,16 +113,21 @@ type ToArray =
113113
114114type FoldBack =
115115 inherit Default1
116- static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default2 ) = List.foldBack f ( ToList.Invoke x) z
116+ static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default2 ) =
117+ #if TEST_ TRACE
118+ Traces.add " Foldback Default"
119+ #endif
120+ List.foldBack f ( ToList.Invoke x) z
117121 static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default1 ) = ( ^F : ( static member FoldBack : ^F -> _ -> _ -> ^b ) x, f, z)
118- static member FoldBack ( x : seq < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f ( Seq.toList x) z
119- static member FoldBack ( x : option < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with Some x -> f x z | _ -> z
122+ static member FoldBack ( x : seq < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f ( Seq.toList x) z
123+ static member FoldBack ( x : option < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with Some x -> f x z | _ -> z
124+ static member FoldBack ( x : voption < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with ValueSome x -> f x z | _ -> z
120125 static member FoldBack ( x : list < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f x z
121126 static member FoldBack ( x : _ [] , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f x z
122127 static member FoldBack ( x : Set < _ > , f , z , [<Optional>] _impl : FoldBack ) = Set.foldBack f x z
123128 static member FoldBack ( x : _ ResizeArray , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToArray ()) z
124129 static member FoldBack ( x : string , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToCharArray ()) z
125- static member FoldBack ( x : StringBuilder , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToString() .ToCharArray ()) z
130+ static member FoldBack ( x : StringBuilder , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToString() .ToCharArray ()) z
126131 static member FoldBack ( x : Id < 'a > , f , z , [<Optional>] _impl : FoldBack ) = f x.getValue z
127132
128133 static member inline Invoke ( folder : 'T -> 'State -> 'State ) ( state : 'State ) ( foldable : '``Foldable' < T > ``) : 'State =
@@ -136,18 +141,23 @@ type FoldMap =
136141
137142 static member inline FromFoldFoldBack f x = FoldBack.Invoke ( Plus.Invoke << f) ( Zero.Invoke ()) x
138143
139- static member inline FoldMap ( x : option < _ >, f , [<Optional>] _impl : FoldMap ) = match x with Some x -> f x | _ -> Zero.Invoke ()
140- static member inline FoldMap ( x : list < _ > , f , [<Optional>] _impl : FoldMap ) = List.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
141- static member inline FoldMap ( x : Set < _ > , f , [<Optional>] _impl : FoldMap ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
142- static member inline FoldMap ( x : _ [] , f , [<Optional>] _impl : FoldMap ) = Array.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
144+ static member inline FoldMap ( x : option < _ > , f , [<Optional>] _impl : FoldMap ) = match x with Some x -> f x | _ -> Zero.Invoke ()
145+ static member inline FoldMap ( x : voption < _ >, f , [<Optional>] _impl : FoldMap ) = match x with ValueSome x -> f x | _ -> Zero.Invoke ()
146+ static member inline FoldMap ( x : list < _ > , f , [<Optional>] _impl : FoldMap ) = List.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
147+ static member inline FoldMap ( x : Set < _ > , f , [<Optional>] _impl : FoldMap ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
148+ static member inline FoldMap ( x : _ [] , f , [<Optional>] _impl : FoldMap ) = Array.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
143149
144150 static member inline Invoke ( f : 'T -> 'Monoid ) ( x : '``Foldable' < T > ``) : 'Monoid =
145151 let inline call_2 ( a : ^a , b : ^b , f ) = (( ^a or ^b ) : ( static member FoldMap : _*_*_ -> _) b, f, a)
146152 let inline call ( a : 'a , b : 'b , f ) = call_ 2 ( a, b, f)
147153 call ( Unchecked.defaultof< FoldMap>, x, f)
148154
149155type FoldMap with
150- static member inline FoldMap ( x : seq < _ > , f , [<Optional>] _impl : Default2 ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
156+ static member inline FoldMap ( x : seq < _ > , f , [<Optional>] _impl : Default2 ) =
157+ #if TEST_ TRACE
158+ Traces.add " FoldMap Default"
159+ #endif
160+ Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
151161 static member inline FoldMap ( x , f , [<Optional>] _impl : Default1 ) = ( ^F : ( static member FoldMap : ^F -> _ -> _) x, f)
152162 static member inline FoldMap ( _ : ^t when ^t : null and ^t : struct , _ , _ : Default1 ) = ()
153163
0 commit comments