Why I still reach for Lisp and Scheme instead of Haskell

· coding · Source ↗

TLDR

  • A multi-language veteran argues GNU Guile Scheme beats Haskell for prototyping due to interactive REPL workflows, hygienic macros, and lower abstraction overhead.

Key Takeaways

  • Haskell’s IO monad forces refactoring to add a print statement; Scheme lets you drop (write ...) anywhere for instant inspection.
  • Haskell’s Hackage ecosystem fragments into dozens of incompatible DSLs (Parsec, Servant, xml libs) each with its own learning curve; Scheme’s macro system unifies extension.
  • Guile’s REPL with Emacs/Arei allows live function redefinition in running processes, including production, eliminating edit-compile-run cycles.
  • Template Haskell metaprogramming requires language extensions and a complex AST API; Scheme define-syntax macros reshape syntax with minimal boilerplate.
  • Author concedes Scheme lacks JVM-scale batteries-included ecosystem and Haskell’s optimizing compiler, framing both as trade-offs rather than defects.

Hacker News Comment Review

  • Commenters immediately noted Clojure as the obvious synthesis: Lisp ergonomics plus JVM ecosystem, which the author conspicuously avoids endorsing.
  • Practical live-debugging claims drew scrutiny: hot-patching in production is well-documented in Common Lisp but commenters found it unclear how available it is in Racket or Guile specifically.
  • A commenter flagged structural similarity to a 2012 HN post titled “Why I prefer Scheme to Haskell,” raising mild plagiarism concern without resolution.

Notable Comments

  • @evdubs: Wrote substantial Racket code across multiple repos and never needed a macro, questioning how central macros really are day-to-day.
  • @wild_egg: Suggests Coalton as a direct alternative for Lisp developers who want Haskell-style types without leaving the Lisp world.

Original | Discuss on HN