Components
go-composites is a set of small, interface-first packages. Each is its own
repository and Go module (under the github.com/go-composites/ module path; see
the note on the homepage).
Core
base — the reflective root every composite embeds (
Kind/RespondTo/Methods).
null — the minimal null-object sentinel.
error — the error interface and its sentinels.
result — payload + error wrapper with functional options.
Values & collections
boolean — a boxed boolean with a structural
IsTrue().
number — a boxed int/float; arithmetic returns a
result.
bignumber — an arbitrary-precision integer over
math/big.Int.
rational — an exact rational number over
math/big.Rat.
complex — a complex number
a+bi over complex128.
bigfloat — an arbitrary-precision float over
math/big.Float.
string — a boxed string value.
buffer — a mutable text buffer (StringBuilder), the counterpart to
string.
symbol — an interned, immutable identifier.
time — a deterministic instant plus a
Duration span.
date — a deterministic calendar date, the pure-calendar complement to
time.
array — interface-first slice with
result-returning methods and combinators.
dictionary — an interface-first key/value map.
set — an unordered collection of unique items.
orderedset — the insertion-ordered sibling of
set.
sortedset — the comparator-sorted sibling of
set.
bag — a counted collection (multiset): items carry a multiplicity.
range — an integer interval with
result-returning construction.
pair — a fixed two-element grouping.
Composition, meta & generics
proc — a first-class callable with railway
Then composition.
enumerator — a lazy sequence with
Map/Filter/Take.
compose —
Pipe/Run of result-returning steps.
composites — the one-import meta-package.
typed — the
Result[T]/Optional[T]/Slice[T] generics track.
The org also ships two static analyzers that enforce its invariants on every
repo — nonnil (the Null-Object rule) and
respondto (reflective dispatch).
Placeholder repositories
One repository — is — is currently an empty placeholder (a
README stub and a LICENSE, with no Go source). It is not yet documented in
depth; this site will cover it once it ships code.