4 ms·
I’m currently a bit overweight, like maybe 10-15lbs. This is because I have some combination of bandwidth-consuming and focus-consuming things going on that res
by benreesman 4y ago
I’m currently a bit overweight, like maybe 10-15lbs. This is because I have some combination of bandwidth-consuming and focus-consuming things going on that results in me not doing an obviously correct thing: get the fuck back in shape.
Every hacker in the peanut gallery deep-down knows that they should know Haskell and Lisp well. They resent the fact that their job or personal life or whatever doesn’t leave room to get serious about computation theory. And they vent this frustration endlessly on people lucky enough to have had the bandwidth at the right time to thoughtfully contrast computation with physical computing machines (the only person I know to stomp Lemire in AVX is a GHC hacker).
I’m kinda fat because I haven’t fixed it yet. People don’t know Haskell and Lisp well because they haven’t fixed it yet.
Neither is an appealing look.
- sudosysgen 4y agoMeh. I have had the time to learn a fair amount of Haskell and do a few projects in it (mainly interpreters). It's a fun language in some ways, and it was nice to know how to use it because it expands your ways of thinking, but beyond that it's not terribly useful, and I don't think that it's much better at that than other functional programming languages. Learning about the type-system is neat but IMO not as perspective changing as "getting" purely functional programming. However, as an actual tool to do actual work, I really don't see why you would go about it for anything but very specific projects.
- feanaro 4y agoI seriously suspect there is a bimodal distribution are play here, because I would love to use Haskell, or something like it that's possibly more powerful like Idris, wherever I could. And at the same time I notice a lot of people expressing your sentiment. These systems make it easy(er) to model concepts in a mathematical way and this is my natural (or preferred?) mode of thinking. And they enable you to do it easily and ergonomically. What is there not to like? (I know there are flaws at hand, even some potentially very debilitating flaws depending on your use case. But damn, I'd use these languages wherever I can.)
- sudosysgen 4y agoSee the thing is, I also love thinking about things mathematically/as relations/as recurrences. But I like the more imperative way of thinking about algorithms and data wrangling just as much. So in practice, I'll go for a language that allows me to do both easily, instead of going for something like Haskell where any imperative way of doing things is very painful (as well as other issues, of course). So why would I use Haskell and limit myself for fairly marginal benefit?
- rowanG077 4y agoHow is the imperative way painful in Haskell? Nothing stops you from just writing everything in the IO monad if you feel your algorithm is easier to write in an imperative style.
- sudosysgen 4y agoWhat's the point of using Haskell if I'm going to do that? I much prefer using a language that does imperative programming very well and functional programming fairly well if I'm going to use both.
- rowanG077 4y agoBecause Haskell is a general purpose programming language. It doesn't do imperative programming worse then for example Python or C#.
- sudosysgen 4y agoThat's very false. Python or C# are significantly better at imperative programming.
- feanaro 4y agoThe point is you're going to have parts of the program where you won't be doing imperative style at which Haskell will excel, including at combining and composing the imperative and non-imperative components. There is also the saying that Haskell is the world's best imperative language, and that is not without reason, since you can re-use its usual power of abstraction while writing imperative code too.
- axman6 4y ago> it’s not terribly useful Well, it’s been paying my wages for the past eight years, so it’s incredibly useful to me. Are we services “very specific projects”? Are data processing systems? Are geospatial data munging? Are financial systems? Those all sound like mundane, every day projects, and they’re exactly what I’ve been working on. And when it comes to “actual work”, that’s where Haskell truly shines - being able to fearless refactor code and iterate until the compiler is happy again is my favourite feature of Haskell. It’s not the “neat type system”, it’s the ability to not have to keep the entire project in my head at absolutely all times because I might forget to make a stupid change the compiler should have caught for me. The productivity is massive, once you’ve invested the time, but it does take time and it is an investment.
- exdsq 4y agoI've worked with Haskell professionally. It was... interesting. I'd rather be in shape than deal with Stack/Cabal/Nix again. If anyone reading this is wondering if they should learn Haskell - wonder if your time could be better spent having a fun and active life instead lol.
- benreesman 4y agoOh I feel you on the weird effort/payoff curve. I spent months wanting to throw my computer out the fucking window learning Nix. But I eventually cracked the code and now it like where is deep enough to bury anything running Ubuntu. Let’s fucking break non-dynamic linking of libc because GNU. NixOS is fundamentally wrong on a few key points. But it’s close enough to right to make everything else look ridiculous. Who doesn’t love never really knowing without rigorous audit what is running on my machine that’s highly optimized for Drepper’s career.
- foldr 4y agoI second this. I think Haskell is a research programming language, and in a way I feel lucky that I first learned it way back in 2002, long before anyone seriously thought of using it for professional software development. Haskell 98 is a pretty awesome programming language. It's not the best fit for every domain, but you can write concise readable code in it. The type system is just sophisticated enough to let you model your domain, but not so sophisticated that it becomes a distraction. A lot of modern Haskell code has the unfortunate property that the types of the functions are harder to understand than their implementations. Type inference is much more valuable when it's the other way round. You know that [a] -> [a] is the right type for the 'reverse' function, so if you get a type error, you're sure that you made an error in your implementation. Conversely, many modern Haskell libraries give rise to extremely complex types, even when you're doing something mundane like making an SQL query. When you get a type error, it's then anyone's guess whether you misannotated a type somewhere or made an error in your implementation. I personally feel that partial types systems are the way forward. Type the 80-90% of your code that's easy to type without a fancy type system. Dynamically type the rest and write some tests for it. Fancy types make you feel smart (and in all seriousness are a fascinating and important research topic), but their practical utility is limited IMO.
- akamaka 4y agoTo take your analogy further, the LISP masters are like ultra-fit personal trainers. When they run a bootcamp for out-of-shape people, they start off with impractically intense exercises and just make everyone demotivated.
- grendelt 4y ago"Oooooooh! Welcome to Rex Kwan Do! Let me show you how superior I am to you know-nothing chumps! Bow to your sensei! Bow to your sensei!" I had some pretty bad language instruction in college, but the professor teaching Haskell was the worst. Maybe it really was a case of "if you can't explain it simply, you don't understand it well enough.", but I remember everyone finishing that class (just barely) and nobody ever wanting to do use it again.
- Cu3PO42 4y agoTo present anecdotal counter evidence: my FP class using Haskell was phenomenal. I've talked to other students who've also taken the class and they generally agree.
- nh23423fefe 4y agoLearning Haskell is a mind makeover I agree. People are missing the point when they say nonsense like, "well if haskell is so great why isn't every piece of software written in it and outperforming on all possible metrics?" That kind of lazy thinking "isn't even wrong." You learn haskell to become the kind of person who "has learned." The ignorant imagine haskell is a promised superpower that will under-deliver "productivity gains." It's a new way of thinking and building software.
- quickthrower2 4y agoIf there are productivity gains they will be invisible: you wont make the first feature X twice as fast (dev time), but you might make the 100th feature twice as fast due to lack of tech debt, but you wont notice as every team gets used to their cadence. The lack of tech debt comes from there not being the horrible OO sins. OO is great but there is a lot of “assume not null” and L in SOLID violations in practice and it all adds up. Haskell has explicit opt-in nulls (optionals) and there is no L to worry about as there is no subtyping.
- deleted 4y ago[deleted]
- astrange 4y ago> I’m currently a bit overweight, like maybe 10-15lbs. This is because I have some combination of bandwidth-consuming and focus-consuming things going on that results in me not doing an obviously correct thing: get the fuck back in shape. Luckily, this doesn't take as much time as it sounds, because exercise (and other time consuming things) aren't helpful for losing weight. Everything else yes, losing weight no. That's because it's pretty much entirely about your diet, and exercising makes you hungrier, which makes it harder to comply with the diet.