feat: Complete relational functions for vectors

Toward its goal, this commit also:
  * Adds a new section of logical functions, and defines `not`, `and`,
    `or` for all current types.
  * Extends `OneOf` choice/union type to allow argument types that are
    themselves `OneOf` types.
  * Adds a readable .toString() method for TypePatterns.
  * Defines negate (as a no-op) and isnan (as always true) for the Undefined
    type
  * Extends comparisons to the Undefined type (to handle comparing vectors
    of different lengths)
This commit is contained in:
Glen Whitney 2025-05-02 19:03:54 -07:00
parent c3c2bbbf78
commit edfba089e3
19 changed files with 238 additions and 19 deletions

7
src/vector/logical.js Normal file
View file

@ -0,0 +1,7 @@
import {promoteBinary, promoteUnary} from './helpers.js'
export const not = promoteUnary('not')
export const and = promoteBinary('and')
export const or = promoteBinary('or')