@@ -3,6 +3,7 @@ namespace FSharpPlus.Data
33#if ! FABLE_ COMPILER
44
55open System.Runtime .CompilerServices
6+ open System.ComponentModel
67open FSharpPlus.Control
78open FSharpPlus.TypeLevel
89open TypeLevelOperators
@@ -294,6 +295,13 @@ module Matrix =
294295 { Items =
295296 Array2D.init ( Array2D.length1 m1.Items) ( Array2D.length2 m1.Items)
296297 ( fun i j -> f m1.Items.[ i, j] m2.Items.[ i, j] ) }
298+
299+ [<MethodImpl( MethodImplOptions.AggressiveInlining) >]
300+ let map3 ( f : 'a -> 'b -> 'c -> 'd ) ( m1 : Matrix < 'a , 'm , 'n >) ( m2 : Matrix < 'b , 'm , 'n >) ( m3 : Matrix < 'c , 'm , 'n >) : Matrix < 'd , 'm , 'n > =
301+ { Items =
302+ Array2D.init ( Array2D.length1 m1.Items) ( Array2D.length2 m1.Items)
303+ ( fun i j -> f m1.Items.[ i, j] m2.Items.[ i, j] m3.Items.[ i, j] ) }
304+
297305 [<MethodImpl( MethodImplOptions.AggressiveInlining) >]
298306 let mapi ( f : int -> int -> 'a -> 'b ) ( m : Matrix < 'a , 'm , 'n >) : Matrix < 'b , 'm , 'n > =
299307 { Items = Array2D.mapi ( fun i j -> f i j) m.Items }
@@ -554,8 +562,17 @@ module Matrix =
554562type Matrix < 'Item , 'Row , 'Column > with
555563 static member inline Item ( mtx : Matrix < 'a , 'm , 'n >, ( m , n )) = Matrix.get m n mtx
556564 static member inline Map ( mtx : Matrix < 'a , 'm , 'n >, f : 'a -> 'b ) = Matrix.map f mtx
565+
566+ [<EditorBrowsable( EditorBrowsableState.Never) >]
567+ static member inline Map2 ( f , m1 , m2 ) : Matrix < 'x , 'm , 'n > = Matrix.map2 f m1 m2
568+
569+ [<EditorBrowsable( EditorBrowsableState.Never) >]
570+ static member inline Map3 ( f , m1 , m2 , m3 ) : Matrix < 'x , 'm , 'n > = Matrix.map3 f m1 m2 m3
571+
557572 static member inline Return ( x : 'x ) : Matrix < 'x , 'm , 'n > = Matrix.replicate Singleton Singleton x
573+ static member inline Pure ( x : 'x ) : Matrix < 'x , 'm , 'n > = Matrix.replicate Singleton Singleton x
558574 static member inline ( <*> ) ( f : Matrix < 'x -> 'y , 'm , 'n >, x : Matrix < 'x , 'm , 'n >) = Matrix.map2 id f x
575+ static member inline ( <.> ) ( f : Matrix < 'x -> 'y , 'm , 'n >, x : Matrix < 'x , 'm , 'n >) = Matrix.map2 id f x
559576 static member inline get_Zero () : Matrix < 'a , 'm , 'n > = Matrix.zero
560577 static member inline ( + ) ( m1 , m2 ) = Matrix.map2 (+) m1 m2
561578 static member inline ( - ) ( m1 , m2 ) = Matrix.map2 (-) m1 m2
@@ -579,9 +596,21 @@ type Matrix<'Item, 'Row, 'Column> with
579596type Vector < 'Item , 'Length > with
580597 static member inline Item ( v : Vector < 'a , 'n >, i ) = Vector.get i v
581598 static member inline Map ( v : Vector < 'a , 'n >, f : 'a -> 'b ) : Vector < 'b , 'n > = Vector.map f v
599+
600+ [<EditorBrowsable( EditorBrowsableState.Never) >]
601+ static member inline Map2 ( f , vec1 , vec2 ) : Vector < 'x , 'n > = Vector.map2 f vec1 vec2
602+
603+ [<EditorBrowsable( EditorBrowsableState.Never) >]
604+ static member inline Map3 ( f , vec1 , vec2 , vec3 ) : Vector < 'x , 'n > = Vector.map3 f vec1 vec2 vec3
605+
582606 static member inline Return ( x : 'x ) : Vector < 'x , 'n > = Vector.replicate Singleton x
607+ static member inline Pure ( x : 'x ) : Vector < 'x , 'n > = Vector.replicate Singleton x
583608 static member inline ( <*> ) ( f : Vector < 'x -> 'y , 'n >, x : Vector < 'x , 'n >) : Vector < 'y , 'n > = Vector.apply f x
609+ static member inline ( <.> ) ( f : Vector < 'x -> 'y , 'n >, x : Vector < 'x , 'n >) : Vector < 'y , 'n > = Vector.apply f x
610+
611+ [<EditorBrowsable( EditorBrowsableState.Never) >]
584612 static member inline Zip ( x , y ) = Vector.zip x y
613+
585614 static member inline get_Zero () : Vector < 'x , 'n > = Vector.zero
586615 static member inline ( + ) ( v1 : Vector < _ , 'n >, v2 : Vector < _ , 'n >) = Vector.map2 (+) v1 v2
587616 static member inline ( - ) ( v1 : Vector < _ , 'n >, v2 : Vector < _ , 'n >) = Vector.map2 (-) v1 v2
0 commit comments