Hurl, the Exceptional Language

Resumable control flow, toss, and algebraic effects

  • Many see toss as essentially resumable exceptions or generators: it unwinds the stack to a handler and then resumes where it left off.
  • Some compare it to stack-based event propagation or passing callbacks via a hidden channel.
  • Several commenters note this is very close to algebraic effects; hurl/exceptions = 0 resumptions, toss = 1 resumption, “full” effects = 0..many resumptions.
  • There’s debate whether the language is jokingly downplaying a genuinely powerful idea that PL researchers take seriously.

Relation to other languages and systems

  • Comparisons are made to OCaml 5 effect handlers, Koka’s algebraic effects, Unison’s abilities, Python/C# generators, Visual Basic’s “Resume Next”, and Common Lisp’s conditions/restarts.
  • Hurl’s model is seen as a restricted version of conditions (only resuming, fewer restart options).

Imports, namespaces, and side effects

  • Strong sentiment for explicit, namespaced imports and against top-level side effects; they’re seen as crucial for readability and reasoning.
  • Many examples from Go, Python, Elixir, Nim, Gleam, etc. illustrate pain when module names and import paths diverge or imports silently introduce names.
  • Some argue good IDE support mitigates this; others reject depending on heavyweight tools.

Exceptions vs result/option-based error handling

  • Polarized views: some consider exceptions “goto-like” and prefer Go/Rust-style Result/Option; others argue exceptions and error returns are equivalent aside from boilerplate.
  • Concerns: unchecked exceptions make contracts unclear; checked exceptions can hurt composability; error-return styles encourage ignored errors and verbose code.
  • Discussion touches on performance tradeoffs, optimization complexity, and stack traces vs explicit control flow.

Naming, domains, and confusion

  • The name “Hurl” collides with an existing HTTP CLI tool; some find this acceptable, others think reusing a popular active project’s name is confusing.
  • General frustration about name collisions in software, and jokes about absurd or symbol-laden language names.
  • Several appreciate the .wtf domain for its charm.

Implementation, tooling, and tone

  • Some suspect an underlying CPS-style implementation.
  • A few call the language “art” or a “thought experiment”: elegant but intentionally hard to reason about.
  • The playful “Gay Agenda License” draws praise and amusement; it’s noted that AGPL is also offered for open-source use.