import {Vector} from './Vector.js' import {NotAType, Returns} from '#core/Type.js' import {match} from '#core/TypePatterns.js' export const promoteUnary = name => match(Vector, (math, V, strategy) => { if (V.Component === NotAType) { // have to resolve element by element :-( return Returns(V, v => v.map( elt => math.resolve(name, math.typeOf(elt), strategy)(elt))) } const compOp = math.resolve(name, V.Component, strategy) return Returns(Vector(compOp.returns), v => v.map(elt => compOp(elt))) })