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:
parent
c3c2bbbf78
commit
edfba089e3
19 changed files with 238 additions and 19 deletions
9
src/boolean/logical.js
Normal file
9
src/boolean/logical.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import {BooleanT} from './BooleanT.js'
|
||||
import {Returns} from '#core/Type.js'
|
||||
import {match} from '#core/TypePatterns.js'
|
||||
|
||||
export const not = match(BooleanT, Returns(BooleanT, p => !p))
|
||||
export const and = match(
|
||||
[BooleanT, BooleanT], Returns(BooleanT, (p, q) => p && q))
|
||||
export const or = match(
|
||||
[BooleanT, BooleanT], Returns(BooleanT, (p, q) => p || q))
|
Loading…
Add table
Add a link
Reference in a new issue