This made me think back to HDD days. As much as they sucked I kind of miss the HDD grunt - I could hear when stuff was using my disk, it was kind of reassuring that the PC was working. Sort of like that floppy drive boot check sound. That HDD seek rumble and CD spin when you were installing games. Objectively these things are a negative but I kind of miss it. This also made me realize where car fans complaining about the electric car feel are coming from :)
I remember the first time I used a computer with an SSD. Many of the performance issues I naively blamed on the CPU or lack of memory were really the HDD. I just never had anything better to compare it to.
Instead of making my own top level comment I'll just add onto this one: functional programming in general and Elm in particular. A lot of languages and frameworks promise to make programming fun, Elm is the only one that's held up for more than a few weeks. Months later I'm still doing substantial side projects in it and get a rush just from opening up a new .elm file and starting a new set of types and pure functions.
Funny you should mention type classes-- that's one of the biggest things that Elm, the little brother to Haskell in many ways, doesn't support (and doesn't intend to, for reasons of limiting the footguns available to devs and also keeping to the high standard it sets for itself for error messages IIRC...)
I would agree with "Haskell", and typeclasses are probably are the most important feature, if such a thing could exist. However, was there a lot of hype for typeclasses when they came out in the 90s? It seems like outside the pure functional programming domain, typeclasses have not yet reached their zenith!
To elaborate a bit, I came from a perl, java background. I'm aware of clos protocols, I've fiddled with squeak and the "here's a test case, give me all the functions that pass the test". Different languages have different strengths.
But golly, Haskell has (had) a lot of hype. Monads, lazy evaluation, random lens stuff is fine and all, but type classes are unreal. you get to specify up front what capabilities you want to buy into.
I guess, just try implementing Num of Float as the first derivative. It's pretty magical how much power the compiler provides. And you _know_ it's doing what you think it's doing.
Haskell opens up a bunch of rabbit holes. but really getting a good grasp on interfaces that don't leak is, well from my background, really really mind expanding. There's a large difference between being real smart and having the compiler enforce assumptions. I dunno. I think the Haskell hype lives up to the claims from type classes alone.
Solid state disks. Huge speed boost.