Liskell – Haskell Semantics with Lisp Syntax [pdf]

Parentheses crash the Haskell party — macro wars go nuclear

TLDR: Liskell gives Haskell a Lisp-style look to make code-generating features easier, plugging into the main Haskell compiler. The comments ignite a macro vs. typeclass fight, citing Hackett, Coalton and Shen, with jokes about a “Rusted” mashup—proof devs want simpler tools for metaprogramming.

Liskell is here to stir the pot: it looks like Lisp (the language famous for lots of parentheses) but acts like Haskell (the math-y, super-strict one). The paper claims this mashup makes “code that writes code” easier by simplifying how the compiler reads programs. It plugs into the main Haskell compiler and shows off tricks from in-place code quotes to even embedding Prolog. Translation for non-nerds: Liskell dresses Haskell in Lisp clothes to unlock more powerful shortcuts. You can peek at it here: Liskell.

But the comments? Absolute fireworks. One user slams the brakes on the usual Haskell defense, snapping: “Typeclasses don’t replace macros.” Another waves a rival flag with Hackett (Haskell with Racket’s famous macro system), while a third flips the script with Coalton — a Haskell-like language running on top of Common Lisp. Someone else asks how this compares to the cult language Shen. And then the comic relief: a rallying cry for “Rusted!!!” — Rust rules, D’s look, and… a garbage collector for good measure. It’s a choose-your-fighter moment: parentheses purists, Haskell traditionalists, and language remixers all trading jabs, memes, and links. The only consensus? Everyone wants easier, stronger macros without losing their favorite toys.

Key Points

  • Liskell introduces a Lisp-style syntax for Haskell while preserving Haskell’s runtime semantics.
  • It uses a minimal parse tree and defers syntactic classification to a later compiler stage.
  • User-supplied, dynamically loaded parse tree transformers can rewrite code to extend the language.
  • The paper contrasts Lisp’s macro-driven metaprogramming with Haskell’s Template Haskell and argues AST complexity hinders adoption.
  • Liskell is implemented as a syntax frontend for GHC and demonstrates features from quasiquotation to an embedded Prolog.

Hottest takes

"No. Typeclasses do not replace proper macros. Go home, you are drunk." — bjoli
"Haskell with Racket’s syntax and macro system" — EricRiese
"It is time for Rusted !!! Rust semantics with D syntax" — fithisux
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.