@@ -111,16 +111,21 @@ type ToArray =
111111
112112type FoldBack =
113113 inherit Default1
114- static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default2 ) = List.foldBack f ( ToList.Invoke x) z
114+ static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default2 ) =
115+ #if TEST_ TRACE
116+ Traces.add " Foldback Default"
117+ #endif
118+ List.foldBack f ( ToList.Invoke x) z
115119 static member inline FoldBack ( x : 'F , f : 'a -> 'b -> 'b , z : 'b , [<Optional>] _impl : Default1 ) = ( ^F : ( static member FoldBack : ^F -> _ -> _ -> ^b ) x, f, z)
116- static member FoldBack ( x : seq < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f ( Seq.toList x) z
117- static member FoldBack ( x : option < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with Some x -> f x z | _ -> z
120+ static member FoldBack ( x : seq < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f ( Seq.toList x) z
121+ static member FoldBack ( x : option < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with Some x -> f x z | _ -> z
122+ static member FoldBack ( x : voption < _ > , f , z , [<Optional>] _impl : FoldBack ) = match x with ValueSome x -> f x z | _ -> z
118123 static member FoldBack ( x : list < _ > , f , z , [<Optional>] _impl : FoldBack ) = List.foldBack f x z
119124 static member FoldBack ( x : _ [] , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f x z
120125 static member FoldBack ( x : Set < _ > , f , z , [<Optional>] _impl : FoldBack ) = Set.foldBack f x z
121126 static member FoldBack ( x : _ ResizeArray , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToArray ()) z
122127 static member FoldBack ( x : string , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToCharArray ()) z
123- static member FoldBack ( x : StringBuilder , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToString() .ToCharArray ()) z
128+ static member FoldBack ( x : StringBuilder , f , z , [<Optional>] _impl : FoldBack ) = Array.foldBack f ( x.ToString() .ToCharArray ()) z
124129 static member FoldBack ( x : Id < 'a > , f , z , [<Optional>] _impl : FoldBack ) = f x.getValue z
125130
126131 static member inline Invoke ( folder : 'T -> 'State -> 'State ) ( state : 'State ) ( foldable : '``Foldable' < T > ``) : 'State =
@@ -134,18 +139,23 @@ type FoldMap =
134139
135140 static member inline FromFoldFoldBack f x = FoldBack.Invoke ( Plus.Invoke << f) ( Zero.Invoke ()) x
136141
137- static member inline FoldMap ( x : option < _ >, f , [<Optional>] _impl : FoldMap ) = match x with Some x -> f x | _ -> Zero.Invoke ()
138- static member inline FoldMap ( x : list < _ > , f , [<Optional>] _impl : FoldMap ) = List.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
139- static member inline FoldMap ( x : Set < _ > , f , [<Optional>] _impl : FoldMap ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
140- static member inline FoldMap ( x : _ [] , f , [<Optional>] _impl : FoldMap ) = Array.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
142+ static member inline FoldMap ( x : option < _ > , f , [<Optional>] _impl : FoldMap ) = match x with Some x -> f x | _ -> Zero.Invoke ()
143+ static member inline FoldMap ( x : voption < _ >, f , [<Optional>] _impl : FoldMap ) = match x with ValueSome x -> f x | _ -> Zero.Invoke ()
144+ static member inline FoldMap ( x : list < _ > , f , [<Optional>] _impl : FoldMap ) = List.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
145+ static member inline FoldMap ( x : Set < _ > , f , [<Optional>] _impl : FoldMap ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
146+ static member inline FoldMap ( x : _ [] , f , [<Optional>] _impl : FoldMap ) = Array.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
141147
142148 static member inline Invoke ( f : 'T -> 'Monoid ) ( x : '``Foldable' < T > ``) : 'Monoid =
143149 let inline call_2 ( a : ^a , b : ^b , f ) = (( ^a or ^b ) : ( static member FoldMap : _*_*_ -> _) b, f, a)
144150 let inline call ( a : 'a , b : 'b , f ) = call_ 2 ( a, b, f)
145151 call ( Unchecked.defaultof< FoldMap>, x, f)
146152
147153type FoldMap with
148- static member inline FoldMap ( x : seq < _ > , f , [<Optional>] _impl : Default2 ) = Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
154+ static member inline FoldMap ( x : seq < _ > , f , [<Optional>] _impl : Default2 ) =
155+ #if TEST_ TRACE
156+ Traces.add " FoldMap Default"
157+ #endif
158+ Seq.fold ( fun x y -> Plus.Invoke x ( f y)) ( Zero.Invoke ()) x
149159 static member inline FoldMap ( x , f , [<Optional>] _impl : Default1 ) = ( ^F : ( static member FoldMap : ^F -> _ -> _) x, f)
150160 static member inline FoldMap ( _ : ^t when ^t : null and ^t : struct , _ , _ : Default1 ) = ()
151161
0 commit comments