Why is it called "typed errors"?

The feature behind either has famous names in other ecosystems — Monad, Railway-oriented programming. This page explains why FxDart deliberately calls it none of those. (Never met a monad? Start with Monad & comprehension blocks.)

Why not "Monad"?

Because it would misdescribe the feature. The whole point of the Raise design is that it is not monadic style — it exists to replace flatMap-chaining with straight-line code. You saw this on the typed errors page: the either((r) { ... }) block is the alternative to the nested flatMap pyramid, not a wrapper around it.

Kotlin's Arrow — the design source for this feature — went through exactly this decision. Arrow 1.x had a Monad typeclass, higher-kinded-type emulation, and the Haskell vocabulary to go with it. Arrow 2.x deleted all of it, and even renamed the core operation shiftraise by community poll — choosing the word users understood over the word theory used. The lesson generalises: name for the audience you want, and FxDart's audience is ordinary Dart developers, not category theorists.

There is also a cautionary tale in Dart itself: FP libraries whose public surface speaks Haskell (Monad2, HKT, Do-notation) intimidate exactly the developers who would benefit most from typed errors. A page called "Monad" would scare off its own readers — and describe the one thing this API isn't.

Why "typed errors"?

Why not "raise"?

raise is the accurate "cool" name — it is what the DSL is actually called, and tutorial URLs here are function-named (concurrent.html, fx.html). It was reserved on purpose: if Section 13 later gains per-function tutorial pages (either.html, bind.html, …), a raise.html overview would collide with the future raise function tutorial. typedErrors.html stays free as the section's overview page forever.

What about "Railway"?

Railway-oriented programming is a well-known metaphor for the same idea (a success track and a failure track). It is a fine mental model — and a poor page name: less searchable, not Arrow vocabulary, and a metaphor you must already know before it helps you.

The principle in one line. A name is part of the API: it should tell a Dart developer what the thing does, in words they would search for — typed errors — not certify which abstraction it secretly is.