Pareto Optimal Dev

Simple Haskell

NOTE: lots of links you can tell should be in here aren’t yet.


First Michael Snoyman posted about “boring haskell”, then some others sort of co-opted it, added bits of their own brand of simplicity, and marketed it as “simple haskell”.

What is it

As opposed to “Fancy Haskell”, also see simple haskell vs fancy haskell

I believe part of my negative reaction to “simple haskell” is rooted in how much it gets in the way declarative programming. I also value simplicity in the large over simplicity in the small, but practices such as agile software development make it hard to consider simplicity in the large given they try to eliminate big design up front.

That results in higher adoption of database driven design over domain driven design which I consider to be at least suboptimal. I’m of the opinion that database driven design is inferior to domain driven design most of the time, and since “simple haskell” moves the needle towards the same brand of simplicity underpinning worse is better and the aforementioned database driven design I find myself rejecting it’s tenets as well.

However… I care about teachability of programming languages and reducing unnecessary complexity and I think that “simple haskell” has merits in this area.

This is complicated by the question of whether a programming language that is easy to learn is a virtue or not.

I’ll try and avoid the myraid of ethical questions surrounding that statement since this for now I’m keeping this exobrain narrowly technologically focused.

Maybe “fancy Haskell” is like getting a 4 year degree and worth it even though it’s harder at first.

Another part of “simple haskell” seems to be to prefer monomorphic functions to polymorphic functions, but I feel that’s just a way to avoid big design up front either by choice, inertia, or lack of familiarity. is complexity determined mostly by familiarity?

Links to this note