ExchangeAlgebra 0.5.0.0 is on Hackage: https://hackage.haskell.org/package/exchangealgebra-0.5.0.0
Highlights
- Add selectable value types with
MoneyDecimalandMoneyDouble, while removing theRealFloatsuperclass fromHatVal. - Add an exhaustive account registry and
AccountSemanticscovering roles, posting capability, and JCCI/EDINET presentation names. - Amend Definition 7 with
isContra, contra-aware projections, and netting presentation inbsRows/plRows. - Make closing entries cover every Cost and Revenue account.
- Enforce posting capability by processing context in checked conversion.
- Encode
AccountTitlesBinary tags as big-endianWord16. - Document the categorical phase-1 laws for
mapBasePart,foldEntries, andpostFromNetBy, pinned by property tests. - Add trial-balance validation, consolidation-worksheet validation, JGAAP reporting transformation, and derived period-result metrics.
- Add the ordered CL-SBM
industrialNetwork/industrialFlowsgenerator andindustrialEx1. - Add audit-eval compatibility, scoring, checkpoint, Track S checked-loader, and generated-suite tooling in the examples.
- Improve performance with strict
Journal.fromList, an exact-projection fast path, faster journal append, and projection-sharing trial-balance rows. - Tighten module boundaries:
Alg,JournalandTransTableare abstract (Algebra.Internalholds the representation); posting authority lives inAccounting.PostingPolicy, account balances inTrialBalance.Balance, spill codec and restore inSimulate.Spill;Writeno longer depends onSimulate; Chart plotting sits behind thevisualizeflag; typedmapPosting,replaceNotesandmkJournalreplace implicit contracts.
Breaking changes
See the Breaking section of ChangeLog.md and the README section Migrating to 0.5.0.0. In short: HatVal no longer has a RealFloat superclass; Alg, Journal and TransTable are abstract; closing entries cover every Cost and Revenue account; checked conversion enforces posting capability by context; AccountTitles Binary tags are Word16; contra accounts follow the Definition 7 amendment; binary spill files are validated on read.
The bundled examples (examples/) pin this release; the accounting algebra builds without a cairo toolchain via --flag exchangealgebra:-visualize.