@@ -20,16 +20,16 @@ type Matrix<'a when 'a : struct and 'a : equality>(nrow: int, ncol: int) =
2020
2121 abstract Mxm: Matrix < 'b > -> Mask2D option -> Semiring < 'a , 'b , 'c > -> Matrix < 'c >
2222 abstract Mxv: Vector < 'b > -> Mask1D option -> Semiring < 'a , 'b , 'c > -> Vector < 'c >
23- abstract EWiseAdd: Matrix < 'a > -> Mask2D option -> BinaryOp < 'a , 'b , 'c > -> Matrix < 'a >
24- abstract EWiseMult: Matrix < 'a > -> Mask2D option -> BinaryOp < 'a , 'b , 'c > -> Matrix < 'a >
23+ abstract EWiseAdd: Matrix < 'b > -> Mask2D option -> Semiring < 'a , 'b , 'c > -> Matrix < 'c >
24+ abstract EWiseMult: Matrix < 'b > -> Mask2D option -> Semiring < 'a , 'b , 'c > -> Matrix < 'c >
2525 abstract Apply: Mask1D option -> UnaryOp < 'a , 'b > -> Matrix < 'b >
26- abstract ReduceIn: Mask1D option -> BinaryOp < 'a , 'b , 'c > -> Vector < 'a >
27- abstract ReduceOut: Mask1D option -> BinaryOp < 'a , 'b , 'c > -> Vector < 'a >
26+ abstract ReduceIn: Mask1D option -> Monoid < 'a > -> Vector < 'a >
27+ abstract ReduceOut: Mask1D option -> Monoid < 'a > -> Vector < 'a >
2828 abstract Reduce: Monoid < 'a > -> Scalar < 'a >
2929 abstract T: Matrix < 'a >
3030
31- static member inline (+) ( x : Matrix < 'a >, y : Matrix < 'a >) = x.EWiseAdd y
32- static member inline (*) ( x : Matrix < 'a >, y : Matrix < 'a >) = x.EWiseMult y
31+ static member inline (+) ( x : Matrix < 'a >, y : Matrix < 'b >) = x.EWiseAdd y
32+ static member inline (*) ( x : Matrix < 'a >, y : Matrix < 'b >) = x.EWiseMult y
3333 static member inline (@.) ( x : Matrix < 'a >, y : Matrix < 'b >) = x.Mxm y
3434 static member inline (@.) ( x : Matrix < 'a >, y : Vector < 'b >) = x.Mxv y
3535
@@ -48,33 +48,36 @@ and [<AbstractClass>] Vector<'a when 'a : struct and 'a : equality>(length: int)
4848 abstract Fill: Mask1D option -> Scalar < 'a > with set
4949
5050 abstract Vxm: Matrix < 'b > -> Mask1D option -> Semiring < 'a , 'b , 'c > -> Vector < 'c >
51- abstract EWiseAdd: Vector < 'a > -> Mask1D option -> BinaryOp < 'a , 'b , 'c > -> Vector < 'a >
52- abstract EWiseMult: Vector < 'a > -> Mask1D option -> BinaryOp < 'a , 'b , 'c > -> Vector < 'a >
51+ abstract EWiseAdd: Vector < 'b > -> Mask1D option -> Semiring < 'a , 'b , 'c > -> Vector < 'c >
52+ abstract EWiseMult: Vector < 'b > -> Mask1D option -> Semiring < 'a , 'b , 'c > -> Vector < 'c >
5353 abstract Apply: Mask1D option -> UnaryOp < 'a , 'b > -> Vector < 'b >
5454 abstract Reduce: Monoid < 'a > -> Scalar < 'a >
5555
56- static member inline (+) ( x : Vector < 'a >, y : Vector < 'a >) = x.EWiseAdd y
57- static member inline (*) ( x : Vector < 'a >, y : Vector < 'a >) = x.EWiseMult y
56+ static member inline (+) ( x : Vector < 'a >, y : Vector < 'b >) = x.EWiseAdd y
57+ static member inline (*) ( x : Vector < 'a >, y : Vector < 'b >) = x.EWiseMult y
5858 static member inline (@.) ( x : Vector < 'a >, y : Matrix < 'b >) = x.Vxm y
5959
6060and Mask1D ( indices : int [], length : int , isComplemented : bool ) =
61- member this.IsComplemented = isComplemented
62-
6361 member this.Indices = indices
6462 member this.Length = length
63+ member this.IsComplemented = isComplemented
6564
6665 member this.Item
6766 with get ( idx : int ) : bool =
68- this.Indices |> Array.exists ( ( = ) idx) |> ( <> ) this.IsComplemented
67+ this.Indices
68+ |> Array.exists ((=) idx)
69+ |> (<>) this.IsComplemented
6970
7071and Mask2D ( indices : ( int * int )[], rowCount : int , columnCount : int , isComplemented : bool ) =
71- member this.IsComplemented = isComplemented
72-
7372 member this.Rows = indices |> Array.unzip |> fst
7473 member this.Columns = indices |> Array.unzip |> snd
7574 member this.RowCount = rowCount
7675 member this.ColumnCount = columnCount
76+ member this.IsComplemented = isComplemented
7777
7878 member this.Item
7979 with get ( rowIdx : int , colIdx : int ) : bool =
80- Array.zip this.Rows this.Columns |> Array.exists ( ( = ) ( rowIdx, colIdx)) |> ( <> ) this.IsComplemented
80+ ( this.Rows, this.Columns)
81+ ||> Array.zip
82+ |> Array.exists ((=) ( rowIdx, colIdx))
83+ |> (<>) this.IsComplemented
0 commit comments