August 5th, 2024

Why Does Everyone Hate Haskell, Jazz, and Pure Math?

The article argues that Haskell, jazz, and pure mathematics, often seen as elitist, are crucial for innovation, leading to practical advancements in programming and music, benefiting society overall.

Read original articleLink Icon
Why Does Everyone Hate Haskell, Jazz, and Pure Math?

The article discusses the common disdain for Haskell, jazz, and pure mathematics, often perceived as elitist and irrelevant due to their steep learning curves and abstract nature. Critics argue that these fields produce little practical value, with Haskell programmers creating complex code, jazz musicians playing for each other, and mathematicians engaging in seemingly pointless puzzles. However, the author contends that these disciplines serve as vital playgrounds for innovative ideas that eventually permeate mainstream applications. Concepts like higher-order functions and strong static typing, once considered esoteric, have become integral to modern programming, enhancing efficiency and usability. Similarly, avant-garde musical techniques have influenced popular music, enriching its complexity and appeal. The article emphasizes that theoretical pursuits often lead to significant practical advancements, citing historical examples like Michael Faraday's discoveries in electromagnetism. The author encourages appreciation for those engaged in these highbrow fields, suggesting that their explorations, while initially appearing impractical, can yield profound benefits for society. By venturing into these areas, individuals may uncover valuable insights and innovations that enhance everyday life. The piece ultimately advocates for a broader understanding of the importance of theoretical work in driving progress across various domains.

Link Icon 30 comments
By @timruffles - 6 months
> nowadays every 16-year-old web-dev reaches for Array.map(x => <div>{x}</div>) when they write their pages in the most popular framework. These higher-order functions have now become part of the “hello world”

It's just wrong to ascribe the popularisation of HOFs like `map` to Haskell. `map` was there in good old (practical) Lisp 1.5 back in the 1960s. Why ascribe this to Haskell (released 1990) rather than Lisp? Guido said Python v1 (1994) got HOFs "courtesy of (I believe) a Lisp hacker who missed them"[1], Ruby had blocks in V1 (1995). Haskell's research direction was not about very, very old news like HOFs, it was about non-strict evaluation, and cool type system stuff.

[1] https://www.artima.com/weblogs/viewpost.jsp?thread=98196

By @zarzavat - 6 months
The issue with Haskell is that it doesn’t live up to the promise.

The promise is that you learn this difficult language and you gain a higher-level, cerebral understanding of software, and the type system protects you from bugs.

The reality is that you realize that this language was designed by a merry bunch of category theorists who had little interest in software engineering. The effort put into different parts of the language is super unbalanced. GHC is an impressive feat of compiler engineering. But the other tooling is poor, and so is support for basic features such as records.

Whatever extra bugs are caught by Haskell’s elaborate type system that wouldn’t be caught by a simple type system like Java’s, are replaced by bugs introduced by laziness.

Jazz is a bit different. Non-musicians generally don’t enjoy it. The more knowledge you have of Jazz the more you appreciate it.

By @vouaobrasil - 6 months
This article is just about Haskell. Jazz and pure math are far from hated. Even if many people can't play jazz, they can enjoy it. And let's be honest, nobody even knows what pure math is. Ask anyone who hasn't actually done pure math, and they will have no idea what pure math is. I know because I am a pure mathematician, and I've never met a single person who knows what pure mathematicians actually do.

Actually, let's be honest, there is hardly a soul that knows what Haskell is either. So hate is not really a great word for this title, nor is the use of jazz and pure math.

By @mynegation - 6 months
As a math major, programmer and musical snob (I do hate jazz though) I figured that there are people who love complexity and nuance and their brain lights up with sense of awe getting into Haskell, jazz, and pure math. And there are people who (1) do not necessarily enjoy complexity and nuance that much and just want to get the job done and (2) hate us, pesky snobs (we can be pretty annoying).
By @netbioserror - 6 months
Don't 'ate 'em, just don't like 'em.

Joking aside, 80% of the benefit of functional programming in practice, in my experience, comes from referential transparency, expression-based programming, and sum types. It's even fine to allow for procedural code inside of these referentially transparent functions. The effects these features have on program structure, logic flow, and data structures are profound enough that the benefit of IO monads and other more pure features have diminishing returns for the extra elbow grease that needs to be put in. It's also fine to break the rules in a number of cases you can hopefully count on one hand; stateful code needs to be isolated and well-understood.

By @Etheryte - 6 months
I don't think the starting premise of the article holds at all. Both jazz and Haskell are hugely popular, by listener and practitioner, and user count respectively they've probably never seen better days. Pure math I wouldn't say is really hated either, but it's rather pretty irrelevant for most people. Even in software development, I would say it's pretty rare that you actually need advanced math in your day to day work.
By @082349872349872 - 6 months
Sometimes I wonder if my late-in-life recent appreciation for maths* be just a symptom of having failed to die {in a bizarre gardening accident, driving off Skyline Blvd} while my body could still handle following the childish dream of hex, bugs, and rock&roll.

* https://www.theonion.com/aging-rock-musician-realizes-it-tim...

"Haskell? I was into those guys before they were cool. Miranda, man, that even had diagonal comprehensions... Have you heard of Hope? Kiff this, mec..."

Lagniappe: https://www.youtube.com/watch?v=nSKp2StlS6s

By @jancsika - 6 months
> they seem to be caught up in silly exercises just to show off to other nerds.

Jazz musicians literally so, and to a much more insidious degree than Haskellers or mathematicians.

That is-- jazz musicians fall prey to the tendency to fill time with content pulled directly from the exercises they used to gain proficiency on their instrument. These can be simple iterations that step through a sequence of pitches, enumerating through the degrees of the pentatonic scale, compulsively sequencing through patterns in an octatonic scale, etc.

Worse, this tendency can strike old timers just as easily as newcomers. Coltrane famously began to normalize his improvised lines to patterns he'd practice that were straight out of Slonimsky's book of exercise patterns.

To get a sense of how annoying this can be even to jazz insiders-- imagine a math paper written by five researches. They read the paper aloud at a conference, and when one of them gets to the summation symbol, they immediately explain to the audience:

"So for example, here you'd add one, two, three, four, five, six, seven, eight, nine, and so forth..."

As each researcher reads their section of the paper, they do this, incessantly, for every symbol that can possibly be explained with sequences of numbers.

By @rsynnott - 6 months
The thing about everyone hating jazz feels more meme than reality; I don’t think most people mind it, and of course virtually all modern music is in some way a _descendant_ of jazz. It’s not the most popular style of music today, but, well, it’s _old_; it’d be kind of weird if it was.
By @guitarlimeo - 6 months
I like functional languages.

I don't like imperative languages trying to do functional programming. Especially Javascript. It's just pain to debug a `.filter().map().reduce()` chain, you have to create a separate variable every time you want to insert a `console.log` there somewhere to figure it out.

Also I don't like functional programming eating away the performance. You can sure write 3 O(n) loops easily, but you can't see the instant wins to optimize it the same way you can with imperative programming. Maybe the third loop wanted to reuse something that could be found in the first loop? With imperative programming: Great, put it in a variable outside of the first loop, and fill it. With functional programming: Change all the types in the loops to fit this new variable, and remember to return it through all these functions.

EDIT:

Also as jordigh pointed out here https://news.ycombinator.com/item?id=41160794 I don't like how functional programming obfuscates performance a bit. With imperative languages what you code is what you get. Functional languages do so much more behind the scenes, that it's hard to figure it out some times.

By @samatman - 6 months
Functional programming as in map-filter-reduce? Lisp.

Functional programming as in "strong static typing and algebraic data types"? ML.

I try not to begrudge anyone their enjoyment of anything, and I like jazz, for the record. It's good that we have a language for people who want to do Haskell-y things, and y'know, Pandoc is nice.

But this blog had an opportunity to make the case that Haskell innovations are trickling down into mere programming languages for squares (for the squares out there, if you don't like jazz, you're a square), and they offered two things which don't come from Haskell.

So I put it to you, Hacker News: what did the author miss? Where are the great Haskell innovations us mere programmers now benefit from?

By @sterlind - 6 months
I guess I'm an outlier, but I love Haskell's syntax. It's so intuitive and matches how my brain works. most of the type system feels natural, as well.

I just wish for a dialect with strict evaluation, and side effects instead of the IO monad.

By @pmarreck - 6 months
I wonder how they feel about Idris https://www.idris-lang.org/pages/example.html
By @giovannibonetti - 6 months
Those interested in a (much, much) simpler alternative to Haskell that catches a lot of bugs during compile time might want to look at Gleam [1]. It has excellent tooling with great developer experience and a growing community.

It is a bit like a high level version of Rust, targeted at building web applications, handling concurrency by replacing the borrow checker with Erlang's processes – since it runs in the Erlang's virtual machine.

[1] https://gleam.run/

By @VyseofArcadia - 6 months
What's with the AI generated image of musicians soaking their feet in a castle of beans?
By @b450 - 6 months
It's hard to take too much issue with the general argument. Seems like there are loads of examples of theories developed out of "pure" intellectual pursuits that found practical applications later on.

But I quibble with the broad inclusion of "jazz" in the list. I don't really like the idea that jazz is this never-ending process of avant-garde musical boundary pushing. There are these cults of personality around artists like Miles Davis and Coltrane, and at some point people decided that "easy-listening", "smooth jazz", and "elevator music" were the nadir of "cool", but those particular cultural trends don't necessarily define jazz as a whole. It's also reasonable to regard jazz as having a matured musical vocabulary that we can construct accessible tunes out of without pushing boundaries all the time. I suspect a lot more people do enjoy "lounge" jazz than would admit it.

By @CuriouslyC - 6 months
I've never experienced jazz hate, but I know that jazz musicians often have a rep for being pretentious in musical circles.
By @BaculumMeumEst - 6 months
$(lang) is an older language with lots of existing code. New users hate using $(lang) because it has horrible build tools & a lackluster library ecosystem. There is resistance for fixing $(lang)'s issues because maintainers don't want to break compatibility.

Many languages fall into this tarpit and will never escape.

By @bryanrasmussen - 6 months
I suppose I am the target of this argument, but I would not phrase my dislike of these things in this way.

I would instead say -

I dislike Haskell because when I tried this book http://web.archive.org/web/20190705205338/https://www.cs.yal... about 20 years ago I thought it had been written in an effort to impress upon the reader how smart anyone using Haskell was, at the expense of me getting anything done.

I like various forms of Jazz but I dislike a certain type of Jazz person who seems to be in to Jazz to let you know just how much better they are than you.

I don't think I've ever had anything but enjoyment and admiration for pure math and pure mathematicians.

I'm not sure I like this blog post though.

By @supertofu - 6 months
Pure Math is often incredibly relevant to society about 300 years down the line.
By @rbanffy - 6 months
Learning Haskell has its challenges but once you stop thinking of time as a sequence of events and realise it’s actually a directed acyclic graph of causal nodes, everything becomes crystal clear.
By @tim333 - 6 months
I dispute pure math! It's kind of cool. I mean see this for example https://www.quora.com/How-do-you-find-the-positive-integer-s... (solve frac{x}{y+z}+ \frac{y}{z+x}+\frac{z}{x+y} = 4)
By @el_jay - 6 months
Have spent too little time with Haskell, and am fairly indifferent to pure maths beyond forcible conversion to applied maths against pure mathematicians’ will - but I have an enduring love for jazz. It is freedom incarnate, and the most perfect musical metaphor for life yet known to me.
By @revskill - 6 months
Catamorphism is a mind-blowing pattern to me. Practical and elegant at the same time.
By @FrustratedMonky - 6 months
On the video. Showing C# concepts migrating to 'safe'.

Where would F# fall, wouldn't it be hitting the sweet spot of 'Safe' and 'Useful'.

By @pyinstallwoes - 6 months
> Whitehead explains how Machael Faraday discovered the laws of induction between currents and magnets back in 1831-32. “What is the use of this discovery?” someone asked. “What’s the use of child—it grows to be a man,” he responded. To quote Whitehead, “Faraday’s child has grown to be a man and is now the basis of all the modern applications of electricity.”

There's a difference between working on something because it is interesting and fun, essentially "hacker mentality" and it turning into something special vs pure theory and it never having use. One tinkers with the world building things, the other just adds complexity to abstract ideas with no utility.

tl;dr Faraday was a tinkerer, pure theory are fiction world builders.

By @ethagnawl - 6 months
Hate? No. Intimidated by, perhaps.
By @simpaticoder - 6 months
Because everything, including appreciation, is normally distributed. In this case these elements share a requirement for other qualities, which are also normally distributed. Most (in the middle of the distribution) will hate a puzzle that is too difficult and it will be discarded with disgust. Some (on the left of the distribution) do not understand that it is a puzzle. Yet others (on the right of the distribution) become fascinated and may choose to dwell with the difficult puzzle over a lifetime.
By @cladopa - 6 months
Not really true. Almost no one hates those three topics because in order to hate something you need to know it, and most people don't know those as they are impopular.

Popular music with 4 cords progressions, languages like python that people need or basic math are popular. People can hate python, or basic math or reggaeton because they are everywhere.

I am a Lisper and Haskell programmer myself(along other languages) and I can tell you the proportion of people that I know that know what Lisp is is a minority, like 1% of the general population. I would say 10-20% of the population knows what Fortran or C is.

"Their practicioners seem to be divorced from the real world. They don’t actually produce anything useful. Rather than working on practical things that everyone can enjoy, they seem to be caught up in silly exercises just to show off to other nerds."

That is right. Most people in the Haskell community are totally divorced from reality. I would say more, they are not interested in reality at all. Do not tell them about engines or User Interfaces or databases. Not interested at all. They also love Pure Math problems.

I don't see the problem with that. I see the problem when people that are not interested in reality want to rule reality like millionaire children's intellectuals(Engels and Marx, Trotsky, Lenin...) wanted to rule work without having worked in their entire lives.

I see a problem if someone that told me he is not interested in how the User Interface of my app(or any user interface btw) works is telling me that I have to rewrite it in Haskell because it is perfect in his mind.

I find Haskell ideas useful up to a level, but not further than that. While science comes from philosophy and philosophy comes from love to knowledge by itself, most people doing philosophy in the past was wealthy people whose wealth came from somewhere else, like commerce having a fertile land.