SYSTEM Cited by 1 source
Haskell¶
What it is¶
Haskell is a purely functional, strongly typed, lazily-evaluated programming language with a mature optimising compiler (GHC) and an interactive environment (GHCi). Strict separation of side effects from pure computation via the type system (IO vs. non-IO types), and algebraic data types + type classes as first-class abstraction mechanisms.
Package ecosystem: Hackage (the canonical package archive) + Cabal (package/build tool) + Stackage (curated set of known-compatible package versions).
Canonical sysdesign-wiki appearance¶
Haskell's canonical appearance on the wiki is as the production policy-authoring language at Meta's Sigma anti-abuse rule engine, replacing the in-house DSL FXL in a two-year rewrite completed around 2015. Simon Marlow's post Fighting spam with Haskell lays out the five language-selection criteria Meta used, with Haskell scoring highly on each:
- Purely functional + strongly typed — policies can't inadvertently interact with each other or crash the engine; strong types eliminate many bugs before production. (concepts/purely-functional-policy-language)
- Automatic batching + overlapping of data fetches — addressed by Meta-built Haxl + the Applicative do-notation GHC feature.
- Code push to production in minutes — achieved with hot-code swapping of freshly compiled policy object code.
- Performance — GHC's optimising compiler + Meta-contributed runtime changes delivered 20–30% throughput uplift vs. the FXL interpreter on a typical mix.
- Interactive development — GHCi.
Why this page exists¶
This is a thin system stub: the wiki is a system-design corpus, not a language tutorial. The page exists so that other sysdesign-wiki pages — systems/sigma-meta, systems/haxl, systems/ghc, concepts/purely-functional-policy-language — can link to a canonical anchor for "the language" without implying the wiki documents Haskell semantics comprehensively. External references are authoritative on language detail.
Seen in¶
Related¶
- systems/ghc — the compiler + runtime.
- systems/haxl — Meta's concurrent-data-fetch framework.
- systems/stackage — the curated package set Meta moved to.
- systems/sigma-meta — Meta's production Haskell consumer.
- concepts/purely-functional-policy-language — the property Meta requires of its rule-engine language.