20
20
21
21
/// <reference types="@stdlib/types"/>
22
22
23
- import { ArrayLike } from '@stdlib/types/array' ;
24
- import { Collection } from '@stdlib/types/object' ;
23
+ import { Collection } from '@stdlib/types/array' ;
25
24
26
25
/**
27
26
* Returns accessed values.
28
27
*
29
28
* @returns accessed values
30
29
*/
31
- type NullaryCallback = ( ) => ArrayLike < any > | void ;
30
+ type NullaryCallback < T , U , V > = ( this : V ) => [ T , U ] | void ;
32
31
33
32
/**
34
33
* Returns accessed values.
35
34
*
36
35
* @param values - array element values
37
36
* @returns accessed values
38
37
*/
39
- type UnaryCallback = ( values : Array < any > ) => ArrayLike < any > | void ;
38
+ type UnaryCallback < X , Y , T , U , V > = ( this : V , values : [ X , Y ] ) => [ T , U ] | void ;
40
39
41
40
/**
42
41
* Returns accessed values.
@@ -45,7 +44,7 @@ type UnaryCallback = ( values: Array<any> ) => ArrayLike<any> | void;
45
44
* @param idx - iteration index
46
45
* @returns accessed values
47
46
*/
48
- type BinaryCallback = ( values : Array < any > , idx : number ) => ArrayLike < any > | void ; // tslint-disable-line max-line-length
47
+ type BinaryCallback < X , Y , T , U , V > = ( this : V , values : [ X , Y ] , idx : number ) => [ T , U ] | void ;
49
48
50
49
/**
51
50
* Returns accessed values.
@@ -55,7 +54,7 @@ type BinaryCallback = ( values: Array<any>, idx: number ) => ArrayLike<any> | vo
55
54
* @param indices - strided indices (offset + idx*stride)
56
55
* @returns accessed values
57
56
*/
58
- type TernaryCallback = ( values : Array < any > , idx : number , indices : Array < number > ) => ArrayLike < any > | void ; // tslint-disable-line max-line-length
57
+ type TernaryCallback < X , Y , T , U , V > = ( this : V , values : [ X , Y ] , idx : number , indices : [ number , number , number ] ) => [ T , U ] | void ;
59
58
60
59
/**
61
60
* Returns accessed values.
@@ -66,7 +65,7 @@ type TernaryCallback = ( values: Array<any>, idx: number, indices: Array<number>
66
65
* @param arrays - input and output arrays
67
66
* @returns accessed values
68
67
*/
69
- type QuaternaryCallback = ( values : Array < any > , idx : number , indices : Array < number > , arrays : Array < Collection > ) => ArrayLike < any > | void ; // tslint-disable-line max-line-length
68
+ type QuaternaryCallback < X , Y , Z , T , U , V > = ( this : V , values : [ X , Y ] , idx : number , indices : [ number , number , number ] , arrays : [ Collection < X > , Collection < Y > , Collection < Z > ] ) => [ T , U ] | void ;
70
69
71
70
/**
72
71
* Returns accessed values.
@@ -77,7 +76,7 @@ type QuaternaryCallback = ( values: Array<any>, idx: number, indices: Array<numb
77
76
* @param arrays - input and output arrays
78
77
* @returns accessed values
79
78
*/
80
- type Callback = NullaryCallback | UnaryCallback | BinaryCallback | TernaryCallback | QuaternaryCallback ; // tslint-disable-line max-line-length
79
+ type Callback < X , Y , Z , T , U , V > = NullaryCallback < T , U , V > | UnaryCallback < X , Y , T , U , V > | BinaryCallback < X , Y , T , U , V > | TernaryCallback < X , Y , T , U , V > | QuaternaryCallback < X , Y , Z , T , U , V > ;
81
80
82
81
/**
83
82
* Callback invoked for each pair of indexed strided array elements retrieved via a callback function.
@@ -86,7 +85,7 @@ type Callback = NullaryCallback | UnaryCallback | BinaryCallback | TernaryCallba
86
85
* @param v2 - strided array element
87
86
* @returns result
88
87
*/
89
- type Binary = ( v1 : any , v2 : any ) => any ;
88
+ type Binary < T , U , Z > = ( v1 : T , v2 : U ) => Z ;
90
89
91
90
/**
92
91
* Interface describing `mapBy2`.
@@ -122,7 +121,7 @@ interface Routine {
122
121
* mapBy2( x.length, x, 1, y, 1, z, 1, add, accessor );
123
122
* // z => [ 4.0, 0.0, 12.0, 0.0, 20.0 ]
124
123
*/
125
- ( N : number , x : Collection , strideX : number , y : Collection , strideY : number , z : Collection , strideZ : number , fcn : Binary , clbk : Callback , thisArg ?: any ) : Collection ; // tslint:disable-line:max-line-length
124
+ < X = unknown , Y = unknown , Z = unknown , T = unknown , U = unknown , V = unknown > ( N : number , x : Collection < X > , strideX : number , y : Collection < Y > , strideY : number , z : Collection < Z > , strideZ : number , fcn : Binary < T , U , Z > , clbk : Callback < X , Y , Z , T , U , V > , thisArg ?: ThisParameterType < Callback < X , Y , Z , T , U , V > > ) : Collection < Z > ;
126
125
127
126
/**
128
127
* Applies a binary function to each pair of elements retrieved from strided input arrays according to a callback function and assigns results to a strided output array using alternative indexing semantics.
@@ -157,7 +156,7 @@ interface Routine {
157
156
* mapBy2.ndarray( x.length, x, 1, 0, y, 1, 0, z, 1, 0, add, accessor );
158
157
* // z => [ 4.0, 0.0, 12.0, 0.0, 20.0 ]
159
158
*/
160
- ndarray ( N : number , x : Collection , strideX : number , offsetX : number , y : Collection , strideY : number , offsetY : number , z : Collection , strideZ : number , offsetZ : number , fcn : Binary , clbk : Callback , thisArg ?: any ) : Collection ; // tslint:disable-line:max-line-length
159
+ ndarray < X = unknown , Y = unknown , Z = unknown , T = unknown , U = unknown , V = unknown > ( N : number , x : Collection < X > , strideX : number , offsetX : number , y : Collection < Y > , strideY : number , offsetY : number , z : Collection < Z > , strideZ : number , offsetZ : number , fcn : Binary < T , U , Z > , clbk : Callback < X , Y , Z , T , U , V > , thisArg ?: ThisParameterType < Callback < X , Y , Z , T , U , V > > ) : Collection < Z > ;
161
160
}
162
161
163
162
/**
0 commit comments