feat: Initial core of picomath
Implements a totally simplistic "poortf" mutable typed function and a picomath instance generator, as well as the very beginnings of a number type and one generic function and a default full picomath instance. Also provides some tests which serve as usage examples.
This commit is contained in:
parent
36cc91ca95
commit
536656bfe8
14 changed files with 1627 additions and 2 deletions
6
number/add.js
Normal file
6
number/add.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
import { allNumbers } from './number.js'
|
||||
|
||||
export default function create(pmath) {
|
||||
return pmath('add', [allNumbers,
|
||||
(...addends) => addends.reduce((x,y) => x+y, 0)])
|
||||
}
|
12
number/all.js
Normal file
12
number/all.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
import createNumber from './number.js'
|
||||
import createAdd from './add.js'
|
||||
import createNegate from './negate.js'
|
||||
import createSubtract from '../generic/subtract.js'
|
||||
|
||||
export default function create(pmath) {
|
||||
createNumber(pmath)
|
||||
createAdd(pmath)
|
||||
createNegate(pmath)
|
||||
createSubtract(pmath)
|
||||
// not sure if there's anything reasonable to return here
|
||||
}
|
7
number/negate.js
Normal file
7
number/negate.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
import { oneNumber } from './number.js'
|
||||
|
||||
export default function create(pmath) {
|
||||
return pmath('negate', [oneNumber, n => -n])
|
||||
}
|
||||
|
||||
|
14
number/number.js
Normal file
14
number/number.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
export function allNumbers(args) {
|
||||
for (let i = 0; i < args.length; ++i) {
|
||||
if (typeof args[i] !== 'number') return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
export function oneNumber(args) {
|
||||
return args.length === 1 && typeof args[0] === 'number'
|
||||
}
|
||||
|
||||
export default function create(pmath) {
|
||||
return pmath('number', [() => true, x => Number(x)])
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue