16 lines
539 B
JavaScript
16 lines
539 B
JavaScript
|
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)))
|
||
|
})
|
||
|
|
||
|
|