Hurl, the Exceptional Language
Resumable control flow, toss, and algebraic effects
- Many see
tossas 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
.wtfdomain 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.