Skip to content
Tech News
← Back to articles

Why I still reach for Lisp and Scheme instead of Haskell

read original get Lisp and Scheme Programming Books → more articles
Why This Matters

This article highlights the enduring appeal of Lisp and Scheme for developers seeking a balance between mathematical elegance and pragmatic coding, contrasting them with Haskell's complex type system and theoretical foundations. It emphasizes the importance of choosing tools that align with practical needs while appreciating the innovative ideas Haskell has introduced to the industry.

Key Takeaways

There is a persistent tension in software engineering between the beautiful, mathematically pure ideal of a program, and the messy, pragmatic reality of just getting things done. Over my career, I’ve explored the depths of both extremes in an attempt to find my personal sweet spot for hacking.

Before you sharpen your keyboards and start a flame war over the title, let me point out that I haven’t written this post to talk bad about Haskell, or any other tool for that matter. In fact, I love Haskell. I taught myself, banged my head against the wall over the course of three years, and built several real-world projects with it (some even became a bit lucrative).

Between my time in the web development world, the Go world, the JVM world with Java, Scala and Kotlin, and my long history hacking in Lisp (Emacs, Common, Scheme), I have come to deeply appreciate functional programming.

Enlightening as it can be #

Haskell has what likely is the most amazing, enlightening and complex type system to work with (as do more ML languages). It is also the undisputed king of introducing mathematical ideas and concepts to programming, and popularizing them. Haskell circles are frequented by PhDs, computer science researchers, category theorists and all kinds of smart people (don’t underestimate other communities, like Schemers though). Some of the amazing innovations of Haskell or that it has helped popularize, which blew my mind several times: algebraic data types

pattern matching

functors, monads

monoids, semigroups

effectful computation modelled as monads

purely functional domain-specific languages (DSLs)

... continue reading