17 lines
454 B
TypeScript
17 lines
454 B
TypeScript
import {Complex} from './type.js'
|
|
import {ImpType, Dependency} from '../core/Dispatcher.js'
|
|
|
|
type ComplexRelation<T> =
|
|
T extends Complex<any> ? (a: T, b: T) => boolean : never
|
|
|
|
declare module "./type" {
|
|
interface ComplexImpTypes<T> {
|
|
equal: ComplexRelation<T>
|
|
}
|
|
}
|
|
|
|
export const equal =
|
|
<T>(dep: Dependency<'equal', [T,T]>):
|
|
ImpType<'equal', [Complex<T>, Complex<T>]> =>
|
|
(w, z) => dep.equal(w.re, z.re) && dep.equal(w.im, z.im)
|