Compare commits
2 commits
fbec410c42
...
22f114d7f9
Author | SHA1 | Date | |
---|---|---|---|
22f114d7f9 | |||
9aec1bca17 |
4 changed files with 49 additions and 12 deletions
10
src/generic/all.ts
Normal file
10
src/generic/all.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import { ForType } from '../core/Dispatcher.js'
|
||||
import { GenericReturn } from './type.js'
|
||||
import * as generic from './arithmetic.js'
|
||||
|
||||
export { generic }
|
||||
|
||||
declare module "../core/Dispatcher" {
|
||||
interface ReturnTypes<Params>
|
||||
extends ForType<'numbers', GenericReturn<Params>> { }
|
||||
}
|
17
src/generic/arithmetic.ts
Normal file
17
src/generic/arithmetic.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
import { ConservativeUnary, Dependency, ImpType, Signature } from "../core/Dispatcher";
|
||||
|
||||
declare module "./type" {
|
||||
interface GenericReturn<Params> {
|
||||
// Jos: not sure how to define this or why it is needed
|
||||
square: Signature<Params, [T], T>
|
||||
// square: ConservativeUnary<Params, T>
|
||||
// square: Params extends [infer R]
|
||||
// ? R extends number ? UnderlyingReal<R> : never
|
||||
// : never
|
||||
}
|
||||
}
|
||||
|
||||
export const square =
|
||||
<T>(dep: Dependency<'multiply', [T, T]>):
|
||||
ImpType<'square', [T]> =>
|
||||
z => dep.multiply(z, z)
|
3
src/generic/type.ts
Normal file
3
src/generic/type.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export interface GenericReturn<Params> {
|
||||
|
||||
}
|
|
@ -1,11 +1,12 @@
|
|||
import {configDependency} from '../core/Config.js'
|
||||
import {Signature, ImpType} from '../core/Dispatcher.js'
|
||||
import { configDependency } from '../core/Config.js'
|
||||
import { Signature, ImpType, Dependency } from '../core/Dispatcher.js'
|
||||
|
||||
const DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16
|
||||
|
||||
declare module "./type" {
|
||||
interface NumbersReturn<Params> {
|
||||
equal: Signature<Params, [number, number], boolean>
|
||||
unequal: Signature<Params, [number, number], boolean>
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,3 +26,9 @@ export const equal =
|
|||
|
||||
return false
|
||||
}
|
||||
|
||||
export const unequal = (dep: Dependency<'equal', [number, number]>):
|
||||
ImpType<'unequal', [number, number]> =>
|
||||
(x, y) => {
|
||||
return !dep.equal(x, y)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue