Declare implementations and dependencies via standard interfaces for operations #8

Merged
glen merged 20 commits from approach4.6 into main 2023-01-22 01:34:57 +00:00
2 changed files with 20 additions and 4 deletions
Showing only changes of commit a5848125e4 - Show all commits

View File

@ -56,10 +56,10 @@ export const multiply =
}
export const absquare =
<T>(dep: {
add: FnAdd<T>,
absquare: FnAbsSquare<T, T>
}): FnAbsSquare<Complex<T>, T> =>
<T, U>(dep: {
add: FnAdd<U>,
absquare: FnAbsSquare<T, U>
}): FnAbsSquare<Complex<T>, U> =>
(z) => dep.add(dep.absquare(z.re), dep.absquare(z.im))
export const divideByReal =

View File

@ -2,3 +2,19 @@ import {Dispatcher} from './core/Dispatcher.js'
import * as Specifications from './all.js'
export default new Dispatcher(Specifications)
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<number>) => 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)