Commit graph

17 commits

Author SHA1 Message Date
4b81fbe6e2 feat: add conversions to boolean and make mandatory
Some checks failed
/ test (pull_request) Failing after 16s
2025-04-12 07:46:15 -07:00
f38a2d5e88 test: ensure that a function requiring conversion depends on converter
All checks were successful
/ test (pull_request) Successful in 17s
This test turned out to be a very discerning one. Adding it uncovered
  numerous bugs, large and small, in the TypeDispatcher. The most major
  one was that a Map distinguishes keys by strict equality, and hence
  since every lookup for a cached behavior was using a newly-generated array
  of types, the cache was never being hit. So it looked like methods were
  being updated as dependencies changed, when what was really happening
  was that the behavior was simply being regenerated from scratch on every
  call, which would not be performant as the prototype scaled.
  This bug is now fixed (by switching to a third-party ArrayKeyedMap), along
  with many smaller bugs too numerous to list.

  It should now be feasible to go through Pocomath and add all of the functions
  that depend on numbers and booleans only.
2025-04-12 00:07:18 -07:00
bfc64f3789 feat: implicit convert BooleanT to NumberT
All checks were successful
/ test (pull_request) Successful in 19s
Also adds implicit conversion configuration option to Type constructor,
  and institutes a numbers-only bundle, and supports argument matching
  with implicit conversions.

  Still need to test that a behavior that invokes implicit conversion ends up
  with the conversion operation as a dependency (and so regenerates itself if
  the conversion changes).
2025-04-10 22:47:30 -07:00
5bee93dbb3 refactor: prepare for boolean functions
All checks were successful
/ test (pull_request) Successful in 19s
* Defines a BooleanT type
  * adds options to the Type constructor, so far just to allow conversions
    from other types
  * renames Number type to NumberT
  * records the name of types, and puts the name in the string representation
  * defines a conversion fron BooleanT to NumberT, specified to be automatic
  * stub code for automatic conversions, not yet complete
  * BooleanT not yet added to nanomath

Checked that the new facilities do not disrupt the prior behavior on numbers.
2025-04-10 14:01:45 -07:00
14011984a0 chore: fix wrong use-node-version (#16)
All checks were successful
/ test (push) Successful in 16s
Reviewed-on: #16
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
Co-committed-by: Jos de Jong <wjosdejong@gmail.com>
2025-04-10 18:25:40 +00:00
de870f2adc chore: enforce using Node.js 22, fixing #13, ignore IDE files (#15)
All checks were successful
/ test (push) Successful in 10s
Reviewed-on: #15
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
Co-committed-by: Jos de Jong <wjosdejong@gmail.com>
2025-04-10 18:16:38 +00:00
2f9071af1b doc: Fix git URL in README (#11)
All checks were successful
/ test (push) Successful in 11s
Reviewed-on: #11
Co-authored-by: glen <glen@studioinfinity.org>
Co-committed-by: glen <glen@studioinfinity.org>
2025-04-08 23:29:58 +00:00
05ff078529 feat: add a first generic method, square (#10)
All checks were successful
/ test (push) Successful in 10s
Resolves #2.

Reviewed-on: #10
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2025-04-08 23:25:01 +00:00
1a6890f458 test: Add tests for all existing functionality, correcting issues (#9)
All checks were successful
/ test (push) Successful in 11s
Resolves #8.

Reviewed-on: #9
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2025-04-08 22:42:53 +00:00
64f99c0f2d test: Run pnpm test in CI on all PRs and pushes to main (#7)
All checks were successful
/ test (push) Successful in 10s
Resolves #6.

Reviewed-on: #7
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2025-04-08 02:38:28 +00:00
036def4a0c test: Set up a mocha test harness (#5)
We use [mocha](https://mochajs.org/) as the test framework, as it is
  the tool used by mathjs and we would like to make tests as similar
  as possible. However, to tighten the linkage between source code and
  tests, we adopt a somewhat different file organization: unit tests
  for a given source file `blah/foo.js` are in `blah/__test__/foo.spec.js`.

  To run all unit tests, execute the script `pnpm test`.

  Resolves #3.

Reviewed-on: glen/nanomath#5
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2025-04-07 16:18:46 +00:00
79c6d44fda feat: First working TypeDispatcher, supporting plain functions on Number (#4)
Resolves #1.

A hand test showed this code can add two plus two, always a major milestone. So we will skip review on this PR since there is currently no testing framework, and proceed immediately to addressing #3.

Reviewed-on: glen/nanomath#4
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2025-04-07 05:11:50 +00:00
69ef928b6e refactor: Switch to 'map-like object keyed by string and type vector' format
See https://code.studioinfinity.org/glen/nanomath/wiki/Item-Specifications.
  Also stubs out the TypeDispatcher, mocking the merge function, so we
  can see that all of the proper things will be added.

  Ready for initial implementation of the TypeDispatcher.
2025-04-02 11:22:53 -07:00
040ec377a1 feat: add type definition and other function categories for number 2025-03-30 20:00:07 -07:00
183a894868 feat: add arithmetic functions for number 2025-03-29 17:12:35 -07:00
fea0d3ac91 doc: Initialize pnpm and flesh out README 2025-03-29 16:39:29 -07:00
ab3c620cb9 Initial commit 2025-03-29 16:57:23 +00:00