Top all-time · #243
Haskell for all
Personal blog · haskellforall.comprogrammingmathsystems
Haskell for all is a personal blog at haskellforall.com about programming, math and systems. Since 2012, 191 different Hacker News readers have linked it 344 times, most often “Scrap your type classes (and implement them at value level)”. It is still writing: the last post was on 2026-09-02, and you can follow it by feed.
Rarely recommended · 5 of 40 sampled comments recommend it?
Why HN links it
HN readers link this blog for Haskell and functional programming: learning resources, equational reasoning, free monads, and comparisons with Lisp macros and Dhall. Mostly cited as supporting links in comments about other languages and tools.
- Recommended for · 5 comments
- Called a great blog and a good tutorial; posts recommended as accessible free-monad reads and Haskell learning help.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
A blog about Haskell and functional programming
Most-linked posts?
- Scrap your type classes (and implement them at value level)10 people · 12 mentions · first linked 2012-05-02
- Program imperatively using Haskell lenses (2013)9 people · 10 mentions · first linked 2013-05-05
- /2012/06/you-could-have-invented-free-monads.html8 people · 11 mentions · first linked 2012-12-24
- A sufficiently detailed spec is code8 people · 8 mentions · first linked 2026-03-17
- Use Haskell for shell scripting7 people · 9 mentions · first linked 2015-01-30
- The category design pattern7 people · 7 mentions · first linked 2012-08-18
- Worst practices should be hard6 people · 11 mentions · first linked 2016-04-11
- /6 people · 6 mentions · first linked 2013-07-28
- Worst practices should be hard (2016)5 people · 8 mentions · first linked 2021-04-21
- Equational reasoning5 people · 6 mentions · first linked 2013-12-26
What Hacker News says?
As a note, there have been strongly-typed shell languages for Unix for some time. Scheme Shell[0], Turtle[1] and TCSH[2] leap to mind; but there's nothing preventing a developer from using Perl, Python, Lisp or any other language that allows itself to accept stdin as an interpreted script. 0: https://scsh.net/ 1: http://www.haskellforall.com/2015/01/use-haskell-for-shell-s... 2: http://www.tcsh.org/Welcome Edit: oh…
Comment linking /2015/01/use-haskell-for-shell-scripting.html
on “PowerShell is open sourced and is available on Linux”Submitted The category design pattern as a story · 246 points
HN discussionKinda - an instance of an OO subclass is a decorator around an instance of its superclass, so if you're using a language which has a good way of expressing decoration then that's usually better than using inheritance. But as the other reply said, patterns are a language smell - the language needs to support that style and make it idiomatic. Otherwise, if you give people the choice between doing it right but verbosel…
Comment linking /2016/04/worst-practices-should-be-hard.html
on “How Dwarf Fortress is built”Submitted Use Haskell for shell scripting as a story · 217 points
HN discussionThe syntax takes some getting used to but it's useful to point out that the core language is pretty small. Here are some links which might help: http://www.haskellforall.com/2014/10/how-to-desugar-haskell-... https://github.com/kqr/gists/blob/master/articles/simple-syn...
Comment linking /2014/10/how-to-desugar-haskell-code.html
on “Paul Hudak, co-creator of Haskell, has died”Submitted Why I Prefer Functional Programming as a story · 202 points
HN discussionThis reminds me of Morte, an experimental mid-level functional language created by Gabriel Gonzalez. They both seem to be super-optimizing, that is partially executing the program in question. Of course it is a great deal easier to do in a functional language than JavaScript. http://www.haskellforall.com/2014/09/morte-intermediate-lang...
Comment linking /2014/09/morte-intermediate-language-for-super.html
on “Prepack helps make JavaScript code more efficient”Submitted Introductions to advanced Haskell topics as a story · 190 points
HN discussion> Rust will likely infringe on Python over time due to performance, lower defect rate, long-term maintenance advantages No love for Haskell[0]? It does look like the best system scripting language out there right now... I have just never tried it to be sure :( 0: http://www.haskellforall.com/2015/01/use-haskell-for-shell-s...
Comment linking /2015/01/use-haskell-for-shell-scripting.html
on “Python startup time: milliseconds matter”Submitted Firewall rules: not as secure as you think as a story · 189 points
HN discussionThere's a similar blog post by Gabriel Gonzalez which focuses on the incentives set in Haskell: http://www.haskellforall.com/2016/04/worst-practices-should-...
Comment linking /2016/04/worst-practices-should-be-hard.html
on “It's not what programming languages do, it's what they shepherd you to”Submitted Advice for Haskell beginners (2017) as a story · 186 points
HN discussionI remember reading an old post by Gabriel Gonzales on exactly this topic: http://www.haskellforall.com/2015/09/how-to-make-your-haskel... On the other hand, once I did get used to some of the infix operators, I started to really like some of them, i.e. how: f data data becomes f <$> fancyData <*> fancyData where what makes the data fancy might be validation, being in container like list, or even some sort of reactiv…
Comment linking /2015/09/how-to-make-your-haskell-code-more.html
on “Coconut: Pythonic functional programming”Submitted The visitor pattern is essentially the same thing as Church encoding as a story · 177 points
HN discussionIts not just that shared mutable state is hard, I'm thinking of the whole reasoning apparatus you get at your disposal: http://www.haskellforall.com/2013/12/equational-reasoning.ht... That indeed seems very much like something that can be called the "right way". If all functions in a given subset of the code are pure I can even imagine a tool that combines hoogle with your function's type signature and existing type…
Comment linking /2013/12/equational-reasoning.html
on “Why Go Is Not Good (2014)”Submitted Spreadsheet-like programming in Haskell as a story · 148 points
HN discussion> frunk is very cool, and I'm glad it exists, but it gets about 100 downloads a week. The matches macro that we uplifted to the standard library in this release is getting around 20,000. Indeed, because library authors find it easier to write their own macro to solve the problem. And maybe part of that is that frunk is too hard, but I do think it's also the case that macros are too easy - or rather, that the ease of…
Comment linking /2016/04/worst-practices-should-be-hard.html
on “Rust 1.42”Submitted Fast Fibonacci numbers using Monoids as a story · 144 points
HN discussionIndeed. Getting these text based configuration tools work requires a lot of experience in language design. Lots of tools become accidentally Turing complete, like Make. You need to plan these things from the start. If you want any computation possible at all, you need to be extremely vigilant, and base your language on firm foundations. See eg Dhall, a non-Turing complete configuration language ( http://www.haskellf…
Comment linking /2016/12/dhall-non-turing-complete-configuration.html
on “Tensorflow sucks”Submitted From zero to cooperative threads in 33 lines of Haskell as a story · 135 points
HN discussionAlong these lines is an intermediate language called Morte[0], developed by Gabriel Gonzalez, well known in the Haskell community. It seems to still be getting some love. The basic idea is to implement a strongly normalizing calculus of constructions which languages can compile down to. That way, equivalent functions provably generate equivalent code. Here's [1] a blog from 2014 that goes into more detail on motivat…
Comment linking /2014/09/morte-intermediate-language-for-super.html
on “Zero Cost Abstractions”Submitted Scalable Program Architectures as a story · 131 points
HN discussion> I do not see how you can reason about Haskell in Haskell either, as this is a programming language and not a proof language (maybe I am missing something?). http://www.haskellforall.com/2013/12/equational-reasoning.ht... http://www.haskellforall.com/2014/07/equational-reasoning-at... The reasoning is entirely carried out by replacing Haskell expressions with contextually equivalent ones. > Since with both Haskell…
Comment linking /2014/07/equational-reasoning-at-scale.html
on “Functional Programming Jargon”Submitted How to contribute to the Haskell ecosystem as a story · 124 points
HN discussionlenses, the store comonad, cellular automata, convolution,zippers. "whenever you see large datastructures pieced together from lots of small but similar computations there's a good chance that we're dealing with a comonad" http://www.haskellforall.com/2013/02/you-could-have-invented... (The Builder Pattern, The Iterator Pattern, The Command Pattern)
Comment linking /2013/02/you-could-have-invented-comonads.html
on “Functional Programming Jargon”Submitted Worst practices are viral for the wrong reasons (2014) as a story · 122 points
HN discussionI was a fan of Python and Lisp, and skeptical of functional programming (with full referential transparency). I knew many people praised Haskell, but in particular, I didn't understand how it could replace Lisp macros for building abstractions (the article http://www.haskellforall.com/2012/06/you-could-have-invented... changed my mind on that). I was also skeptical about static typing. Then I tried to program in Has…
Comment linking /2012/06/you-could-have-invented-free-monads.html
on “Ask HN: What made you change your mind about a programming language/paradigm?”Submitted State of the Haskell Ecosystem – February 2016 as a story · 118 points
HN discussion"Sufficiently advanced trolling is indistinguishable from ignorance." I'm leaning slightly towards troll due to the smiley face. But I find myself forced to reply anyway, because such a good tutorial came out recently that covers doing exactly what this question asked about. http://www.haskellforall.com/2013/05/program-imperatively-us...
Comment linking /2013/05/program-imperatively-using-haskell.html
on “John Carmack starting port of Wolf 3D in Haskell”Submitted Forward and Reverse Proxies Explained as a story · 113 points
HN discussion