3 ms·
Again, I find this answer somewhat evasive. Many languages support functional programming and are used commercially. You still have not told us: What problems i
by spekcular 5y ago
Again, I find this answer somewhat evasive. Many languages support functional programming and are used commercially. You still have not told us: What problems is Haskell best for? What is its comparative advantage?
I don't think it's unreasonable to expect a more concrete reply to that quesiton than "First master the language, then figure it out."
- the_af 5y ago> You still have not told us: What problems is Haskell best for? Let me be honest here and say I don't find your tone helpful. "You still haven't told us" makes you sound as if you're in a group, critiquing from the tribune. This isn't helpful for honest conversations. There's no "us", there's just you, and I don't owe you any explanation. That said, I provided plenty of links in my answer above, which address at least some of your questions. Have you read them? The site https://www.haskell.org https://www.haskell.org has plenty of testimonials that you could also read to figure why some shops and people have chosen Haskell. Maybe you could send Simon Peyton Jones an email, he's one of the friendliest guys in the software industry. I don't think I've ever read or heard him say anything dismissive about any other person or technology.
- spekcular 5y agoI'm sorry, I don't want to be adversarial or dismissive. It's just that I've been asking a very specific and precise question, and you keep replying to the question but do not answer it. This is a little frustrating!
- the_af 5y agoBut I did answer it, more than once and with links you can read! What I cannot do: provide you with a single sentence stating why you should use Haskell. I don't think anyone can. For the record, I found your single sentence about Rust totally unconvincing as well; I do find Rust compelling because of tutorials, long articles I read about it, and a workshop I once did with a Rust practitioner. None of this is equivalent to debating/convincing on HN. (Similarly, I find Go not compelling because I had to use it for my day job and everything about it made me chafe). So my advice to you: read the links I provided, and keep in mind they are just a starting point. Do a workshop. Work on a midsize problem, maybe also write some Advent of Code Haskell solutions. Or not. It's ok to just go with your gut feeling and focus on Rust. There's a finite amount of time you have available for exploring technologies. Rust will serve you well.
- spekcular 5y agoThe question was: For what problem (or problem domain) is Haskell better than Rust? (Back here, for instance: https://news.ycombinator.com/item?id=29595022 https://news.ycombinator.com/item?id=29595022). The links you gave provide general information about Haskell, but do not answer that question, from what I can see. I don't want a single sentence reason, just a compelling one. Again: I'm not doing this to be adversarial. A decent number of people seem to really love Haskell and extol its virtues. So I'm trying to carefully check that I'm not missing something.
- the_af 5y ago> The question was: For what problem (or problem domain) is Haskell better than Rust? Haskell is a general purpose language, so it's good for any domain well served by a general purpose language. The rest is the list of benefits of statically typed, lazy first, pure functional programming languages. "Haskell or Rust?" is not a question that can be meaningfully and objectively answered in a comment on HN.
- w4rh4wk5 5y agoFrom my experience it is a pretty tough question to answer. You can point people to various 'smaller' aspects (like I did above regarding error handling) and try to explain why Haskell's approach is 'better' compared to other languages. But doing that for a complete, real-world problem is a lot more difficult. I've learned Haskell and used it for a relatively long time until I finally understood what is so nice about it. Again, very hard to explain, and a lot of that comes just from the combination of simple, functional language features. Like: how currying works together with function composition; how sum-types and product-types make it easy to model your domain / problem and using pattern matching to write code that is easy to understand and does the right thing; how a powerful type-system can be leveraged to rule certain bugs out almost completely, right from the design phase. Leveraging monads by using Haskell's special `do` syntax. I only really understood this after having done imperative style programming, then having done functional style programming, and then trying to apply the functional style in an imperative environment and seeing why it does not work there (typically because of some missing language feature). Edit: Just wanted to point out, I am not a fan of Haskell as a whole, since there are a lot of drawbacks in my opinion. There are valuable things to learn from the language, but I do think Rust is superior.
- deleted 5y ago[deleted]
- AnimalMuppet 5y agoNo, he kind of did answer it. "General purpose code". He didn't say "it's for web programming" or "it's for hard real time" or "it's for numeric analysis". I mean, you can probably write web programs in Haskell, but if that's what you're trying to do, you might reach for something else. Same for numerical analysis. For hard real time you would almost certainly reach for something else. But if your program doesn't fit in a "use something specialized" category, and you want to write in a functional style, then consider Haskell. That seems to me to be a perfectly reasonable answer. And the rest of the answer is, essentially, "beyond that, if you want to see, you're going to have to learn it". I also don't find that unreasonable - there's only so much you can explain to someone who doesn't know the language. And that's not just Haskell, that's any language. I kind of have an idea of what Rust is about, but if I want to really understand it, I'm going to have to learn it. Same with Haskell, or Lisp, or pretty much anything. So I found the_af's answer to be quite helpful. And I'm the guy who asked the question, so...