I swapped in the new macro in source files numbers/predicate.ts,
Complex/arithmetic.ts, and Complex/predicate.ts. Note that you have
to specify whether you are reflecting the generic or concrete
implementations, which in some cases will mean two separate macro calls
(as in Complex/predicate.ts).
Also tried out the $$typeMetadata macro in Complex/all.ts; you can see the
result by building and looking at build/Complex/all.js. It splits things
up somewhat but we would still need to do a bunch of parsing, so probably
not worth switching.
Adds a new subdirectory `interfaces` where standard interfaces
are defined. Additional interfaces for a given operation can
be added with an `AliasOf` type operator. Provides type
operators that give the return type, full function type, and
the type of a dependency on, a given operator.
Resolves#6.
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
Reviewed-on: #8
This PR is an effort to address #1. It removes all boilerplate
from individual implementation files, and moves it into
a small, fixed section in the single `all.ts` module for each
type that collects up all of the implementations relating
to that type.
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Reviewed-on: #2
A first pass at specifying some implementations in TypeScript
that actually compiles. It doesn't do anything, as installing
types and operation specifications are currently dummy operations,
but they are all invoked.