A Current Value Is A Summary
++ A balance of €70 tells you where an account ended, but not how it + got there. In an application backed by a persistent event store, + accepted events can provide the history from which current state is + reconstructed.
-- Join us. +
+ History answers only the questions the application was designed to + preserve. Reasons, evidence, attribution, privacy, and retention are + still explicit design choices. +
+One Model, Carried Through The Toolchain
++ Event sourcing and domain modeling can be implemented in many + languages. NeoHaskell is designed to make their core concepts part + of the application model rather than conventions every team must + recreate.
-- Software development should be joyful, not painful. Systems should - become more valuable over time, not more dangerous. Technology - should amplify human creativity, not constrain it. Your 1000th day - of development should feel like your first. +
+ Types can make some invalid combinations unrepresentable. The + compiler catches type mismatches and can require exhaustive handling + where code uses closed alternatives. Tests exercise the policies and + boundary cases they cover. None of these checks can decide whether a + business rule is fair, complete, or right for the real world. +
+Add Behavior In Visible Slices
++ A behavior slice follows one useful change from request through + decision and accepted event to the view needed next. Stable + boundaries keep change local instead of forcing contributors to + reinterpret the whole system.
-Start Today
-- NeoHaskell is ready for pioneers. If you're building something new, - if you're ready to escape the rewrite trap, if you believe software - can be better: We're waiting for you. +
Correct Mistakes Without Erasing Them
++ If a withdrawal is recorded twice, changing the balance repairs the + number but not the history. A domain can instead define a request + to reverse the duplicate, a decision that checks whether it is + allowed, and a compensating event that records the correction.
-- The revolution isn't coming. It's being typed right now, one event - at a time, by developers who refuse to accept that suffering is the - price of scale. +
+ Human- and agent-initiated changes can be routed through the same + request and authorization path. Automation can assist + implementation or submit a request; the team still owns the rule, + the authority to apply it, and the evidence that must be retained.
-- - Welcome to NeoHaskell. Welcome to software development as it - should be. - +
Use It Where History Earns Its Cost
++ This approach is strongest in domains with meaningful lifecycles: + orders, accounts, approvals, grants, projects, memberships, and + other systems where disputes, audit, or accountability matter.
-- - The old world optimizes for machines. We're optimizing for humans. - Join us. - +
+ Simple content sites, disposable prototypes, static lookup data, + and workflows with no meaningful history may be better served by + conventional tools. Event sourcing introduces modeling and + operational costs; those costs should solve a real problem.
- -Start With One Rule You Can Explain
++ Pick one behavior. Name the request, the decision, the fact worth + keeping, and the information someone needs next. That gives the + implementation a shared model to preserve. +
+