diff --git a/.gitignore b/.gitignore index 0dc139f..4788ab4 100644 --- a/.gitignore +++ b/.gitignore @@ -129,6 +129,9 @@ dist # Stores VSCode versions used for testing VSCode extensions .vscode-test +# WebStorm +.idea + # yarn v2 .yarn/cache .yarn/unplugged diff --git a/src/Complex/arithmetic.ts b/src/Complex/arithmetic.ts index 941a654..1919d81 100644 --- a/src/Complex/arithmetic.ts +++ b/src/Complex/arithmetic.ts @@ -51,11 +51,11 @@ export const multiply = } export const absquare = - (dep: { - add: (a: T, b: T) => T, - absquare: (z: T) => T + (dep: { + add: (a: U, b: U) => U, + absquare: (z: T) => U }) => - (z: Complex): T => dep.add(dep.absquare(z.re), dep.absquare(z.im)) + (z: Complex): U => dep.add(dep.absquare(z.re), dep.absquare(z.im)) export const divideByReal = (dep: { diff --git a/src/index.ts b/src/index.ts index bb83486..7508578 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,3 +2,22 @@ import {Dispatcher} from './core/Dispatcher.js' import * as Specifications from './all.js' export default new Dispatcher(Specifications) + + +// Test https://github.com/josdejong/pocomath/issues/1#issuecomment-1364056151 + +import {Complex} from './Complex/type.js' +import {absquare as absquare_complex} from './Complex/arithmetic.js' + +const mockRealAdd = (a: number, b: number) => a+b +const mockComplexAbsquare = (z: Complex) => z.re*z.re + z.im*z.im + +const quatAbsquare = absquare_complex({ + add: mockRealAdd, + absquare: mockComplexAbsquare +}) + +const myabs = quatAbsquare({re: {re: 0, im: 1}, im: {re:2, im: 3}}) +const typeTest: typeof myabs = 7 // check myabs is just a number + +console.log('Result is', myabs)