import { $reflect } from '../core/$reflect.js' import { Dependencies } from '../interfaces/type.js' // unaryMinus dep is just for the experiment // FIXME: the typescript plugin should resolve Dependencies<'multiply' | 'unaryMinus', T> export const square = $reflect((dep: Dependencies<'multiply' | 'unaryMinus', T>): (a: T) => T => z => dep.multiply(z, z) ) // export const square2 = function $reflect(dep: Dependencies<'multiply' | 'unaryMinus', T>) { // return (z: T) => dep.multiply(z, z) // } // export const square = $reflect((dep: { // multiply: (a: T, b: T) => T, // unaryMinus: (x: T) => T, // just for the experiment // }): (a: T) => T => // z => dep.multiply(z, z) // )