nix really nails one of the reasons I think functional programming needs to take a good hard look at itself and how people actually use computers
I know nix isn't perfectly illustrative of functional programming, it's got it's flaws that make it uniquely hard to do useful errors on.
but every stacktrace is 400 foldL calls instead of anything semantically useful, without showing any context to actually understand where and why it's happening. and that isn't unique to nix. Hell it even shows up in Python once people realize they can twist it into resembling FP to the eye.
(as a preface: it isn't actually as hard as I make it sound here if you already know other forms of programming, and it's worth the try anyway. But I'm talking about the interface of these cultures vs people who haven't yet dived FP and made the jump to where you're completely unintelligible to people who don't have a foundation for FP.
these are frustrations I've had for years on years. they aren't that new. you probably won't change my mind on the idea that this is a problem but I'm willing to talk if you aren't just a driveby, though my Haskell is rusty after years of disuse for the reasons I outline re: collaboration)
it's like 90s era C where your stacktrace is all 3 character functions and single character variables because no one could bother to type anything out even as computers gained enough memory and storage and CPU cache to not give a shit
we use all these composable pieces that are, generally, semantically useless to anyone who doesn't already know the codebase and the language pretty well. I know some of the new langs are better at this, but the coders aren't.
there's a lot of people who can make haskell sing. but the less experienced end of Haskell has a lot of people just not writing anything, compared to it was a proglang+culture that valued comprehension for the user-developer-sysadmin over elegance. and that keeps getting exported to the other fps I've dipped my toes into.
I don't give a shit about how powerful something is, if it gets in the way of contributions or maintenance that I otherwise wouldn't have to do because someone walking into the github needs way more bringup if they haven't touched it.
I don't care about elegance when nothing in the builtins are named mnemonically or literally. I do care that this is lauded as a good thing to repeat elsewhere.
"we're honoring the mathematicians" ok. "it was made by math people and we can't change it now, everyone's used to it" yeah but even blogposts all add two sentences to give better descriptions. at what point do we take that absurdity for what it is.
and it sucks because I see the power there, and would love to use it more.
it's just stonewalled by the cult of the lambda, because I also want to be able to collaborate with people who may not be familiar with the language I'm using.
anyway this is a very long post for why I'm settling on rust as a compromise, but like.
I want to love good things that are clearly making progress, I just think they're largely held back by refusing to shift towards where most people are at. And there's "good" reasons for that, I suppose. de facto barriers mean you filter out 'the annoying people with bad ideas' and 'most 20somethings', and I don't think the fp communities even realize it.
but selecting for university graduates and autodidacts is something worth looking at because whew is the survivorship bias strong there. Not to mention most people who feel comfortable talking about it in public have no idea what they're actually talking about.
