This program is tentative and subject to change.
H-E-B is replacing its legacy COBOL purchase order system, which manages ordering across distribution centers to supply more than 435 retail stores. Mainframe migrations typically fail not from infrastructure limits, but from losing decades of implicit business logic. To build a system that will run reliably for the next forty years without runtime nulls or type corruption, we replaced the mainframe with an event-sourced Haskell architecture where purchase order state is modeled as a deterministic fold over an append-only event log.
This experience report details the key functional patterns that enabled the migration. Sum types and total functions allow continuous, compiler-guided refactorings as business requirements evolve during a strangler fig migration. Effects are isolated to input gathering and transactional commits around a pure domain core. Higher-kinded data and a unified schema library let us write record definitions once, deriving wire schemas, field descriptors for sparse updates, and automated audit logs from a single definition.
Finally, we share what eight years and nearly a million lines of production Haskell revealed about ecosystem gaps and long-term maintenance. We built a tagless-final schema DSL (Schwarma), a PostgreSQL transactional job queue (Arbiter), a contract mocking framework (Decoy), Oracle database bindings (ODPI-C), a GHC plugin for automatic OpenTelemetry tracing, a GCP Pub/Sub client, a custom XML parser, and a feature flag library, among others. We evaluate where custom infrastructure succeeded, where self-reliance created friction, and what type-level machinery costs to keep running across four GHC releases.
This program is tentative and subject to change.
Fri 28 AugDisplayed time zone: Eastern Time (US & Canada) change
16:00 - 17:30 | Afternoon Session 2Haskell at IP126 Auditorium Chair(s): Lindsey Kuper University of California, Santa Cruz | ||
16:00 60mTalk | Enterprise Haskell at H-E-BInvited Haskell | ||
17:00 10mTalk | Lightning Talk: Fixen: A Fixed-Point Generator for Haskell Haskell Michael D. Adams National University of Singapore | ||
17:10 10mTalk | Lightning Talk: What's Next with Freer Arrows? Haskell Yao Li Portland State University | ||