Live data from Hacker News

Is Haskell really the language of geniuses and academia? (2019)

habr.com

51–60 of 83 posts

Re: Is Haskell really the language of geniuses and academia? (2019)

#51
post #32
post #16

There are two issues that are really hard to articulate in a language critique: 1) There is no easy way to learn the language. Try explaining that without looking ignorant. 2) The software written in this language is too hard to read and understand. Do either of these problems manifest in Haskell? No idea. But I've seen them manifest in other systems and once I know about them suddenly there is an obvious and suspici…

I've tried to articulate this through pointing out that the documentation culture of Haskell is lacking and indeed I've been called "willingly ignorant, and proud to state that fact publicly" IMO thats really the only remaining problem of Haskell. Most of its documentation is just plain terrible. Rust is probably more difficult to learn as a language, yet the documentation culture is so awesome that one can power thr…

A large part of this (and why you will find it hard to find Haskell developers who admit the state of the documentation is lacking) is that documentation isn't bad -- it's specifically apprentice-level documentation for specific libraries/use-cases that is bad.

In other words, journeyman users who are experienced in "following the types" will find plenty of really high-quality documentation. Total novices who need an introduction to the language will also find high-quality material (though this is more of a recent development).

However, once you're past the novice stage and at the apprentice level where you want to accomplish something specific using some libraries, there's nothing for you there. You have to ask someone at the next journeyman level to sit with you and guide you through following the types.

That is limiting, and under-recognised, I think.

Re: Is Haskell really the language of geniuses and academia? (2019)

#52
post #36
post #33

Earlier quoted context omitted.

There are many things competing for people's time and attention. Why should I learn this is a valid question when you have several dozen other potential things you're looking at learning.

While that's true, in practice I have not found that people tend to spend their time learning other unfamiliar things-- rather, they often either waste their time, or spend their time learning things they are already somewhat familiar with. There's nothing wrong with that, but going outside the comfort zone is how you maximize perspective. In other words, it's pretty much completely impossible to convince someone tha…

Yes, I think there is a culture in mathematics where people believe this to be the case, and I think its not correct.

I can think of several ways to motivate software engineers to learn more category theory (e.g. "did you know that MapReduce is basically an application of monoids?" or "did you know you can solve fast document layout updates with monoids?").

One thing I wonder about though. You say "curiosity" - can you explain what this means to you? Why are you curious about a certain concept? There are thousands of things to learn in the world - are you curious about all of them?

Re: Is Haskell really the language of geniuses and academia? (2019)

#53
post #16

There are two issues that are really hard to articulate in a language critique: 1) There is no easy way to learn the language. Try explaining that without looking ignorant. 2) The software written in this language is too hard to read and understand. Do either of these problems manifest in Haskell? No idea. But I've seen them manifest in other systems and once I know about them suddenly there is an obvious and suspici…

> Do either of these problems manifest in Haskell? Haskell code varies a ton. Some people write simple, straightforward stuff in Haskell with lots of pure functions and relatively simple types, straightforward definitions. Some people invent complicated type systems for their app. Some use weird styles, like points free, or continuation passing. Some will rely heavily on abstractions like monads, applicative functors…

Is point free that weird? JS pipes are in the proposition process.

Data → Process → Process → Process

Is the above unclear?

Re: Is Haskell really the language of geniuses and academia? (2019)

#54
post #23

Earlier quoted context omitted.

> The result is its widespread adoption in its niche And everywhere else, unfortunately. Go is an overreaction in the opposite direction. In 2010 I can't agree that there is a good reason to make a language without generics and reasonable error handling from the very start.

Seems like a lot of people disagreed, because Go is definitely a “successful” language. Kind of getting sick of hearing these same complaints, over and over, to be honest.

Go is only successful because Google spent so much money propping it up by paying people to write stuff in it. It has so many major flaws that it would have had no chance of taking off otherwise. If Google had spent the same amount of money on Haskell instead, it'd be even more popular than Go is today.

Re: Is Haskell really the language of geniuses and academia? (2019)

#55

Earlier quoted context omitted.

> Do either of these problems manifest in Haskell? Haskell code varies a ton. Some people write simple, straightforward stuff in Haskell with lots of pure functions and relatively simple types, straightforward definitions. Some people invent complicated type systems for their app. Some use weird styles, like points free, or continuation passing. Some will rely heavily on abstractions like monads, applicative functors…

Is point free that weird? JS pipes are in the proposition process. Data → Process → Process → Process Is the above unclear?

Not in simple cases. It can get weird very quick though. If I didn't know the intuition behind `(.) . (.)` I would have trouble deciphering it mentally, and would have to derive it with pencil and paper.

Re: Is Haskell really the language of geniuses and academia? (2019)

#56
post #46
post #40

Earlier quoted context omitted.

I don't think that's correct. Especially since there's a community-led organization with the specific goal of increasing adoption https://haskell.foundation/

I think there are many different people with different opinions in the community. The inofficial motto of 'avoid "success at all costs"' is not a joke. It's easy-ish to achieve success if you allow yourself to pander to the masses who don't always understand what they are missing, and there's always been an element in the Haskell community that tries to do what's right, notwithstanding what the large masses think.

I agree that there are many opinions and that Haskell people don't want to compromise on what they see is the value of the language, but I've also seen a lot of people express their desire for more adoption. For example in threads talking about the haskell.org download page, in threads about improving learning resources, and with the Haskell Foundation.

This desire is usually expressed with sentiments like "let's make this easier to learn" and "Let's fix this so it's not a footgun", and not "success at all cost".

Re: Is Haskell really the language of geniuses and academia? (2019)

#57
post #32
post #16

There are two issues that are really hard to articulate in a language critique: 1) There is no easy way to learn the language. Try explaining that without looking ignorant. 2) The software written in this language is too hard to read and understand. Do either of these problems manifest in Haskell? No idea. But I've seen them manifest in other systems and once I know about them suddenly there is an obvious and suspici…

I've tried to articulate this through pointing out that the documentation culture of Haskell is lacking and indeed I've been called "willingly ignorant, and proud to state that fact publicly" IMO thats really the only remaining problem of Haskell. Most of its documentation is just plain terrible. Rust is probably more difficult to learn as a language, yet the documentation culture is so awesome that one can power thr…

By "documentation", do you mean introductions/tutorials, or references? I'll agree the former could use some work, but I find the latter to be excellent.

Re: Is Haskell really the language of geniuses and academia? (2019)

#58
post #52
post #36

Earlier quoted context omitted.

While that's true, in practice I have not found that people tend to spend their time learning other unfamiliar things-- rather, they often either waste their time, or spend their time learning things they are already somewhat familiar with. There's nothing wrong with that, but going outside the comfort zone is how you maximize perspective. In other words, it's pretty much completely impossible to convince someone tha…

Yes, I think there is a culture in mathematics where people believe this to be the case, and I think its not correct. I can think of several ways to motivate software engineers to learn more category theory (e.g. "did you know that MapReduce is basically an application of monoids?" or "did you know you can solve fast document layout updates with monoids?"). One thing I wonder about though. You say "curiosity" - can y…

I think I use "curiosity" in the usual sense of the word, but perhaps what I mean by it is also coloured by my experience.

There are a number of subjects I used to really have zero interest in when I was younger (chemistry, accounting, law, finance, economics...), and in each instance I eventually realized how valuable time spent learning the subject was. After this happened a few times, I began paying closer attention to when I felt disinterested by some academic topic.

I don't think I've felt "uninterested" by any academic topic in years, so I suppose maybe I am curious about it all.

Re: Is Haskell really the language of geniuses and academia? (2019)

#59
post #50

Earlier quoted context omitted.

There are definitely scenarios where laziness is crucial. Haskell is the only mainstream language I know of where laziness is the default, but many languages offer laziness when needed. (E.g. IEnumerable interface in C#.) Monads are essential for "effectful" programming in a functional language. Imperative languages don't need monads, because everything they do is effectful (which leads to unnecessary side effects, a…

I believe clojure has laziness out of the box as well. While both languages are functional, in contrast to Haskell, clojure doesn't have functors or monads. My understanding is that the same problem is essentially solved in a different way with macros.

According to https://clojure-doc.org/articles/language/laziness/, Clojure isn't lazy by default, but does support lazy sequences (like IEnumerable in C#).

Re: Is Haskell really the language of geniuses and academia? (2019)

#60
post #34

Earlier quoted context omitted.

>But, articles explaining the core use cases and how only this language enabled solving it are rare From my (limited) experience with Haskell, my impression is that it's strongest in domains that map _very_ well to formal mathematical models. Mathematical computation is an obvious example, but things like programming language parsers are also really intuitive to build in Haskell. My experience trying to use Haskell f…

I'm having trouble understanding what your actual point of criticism is. The records problem is basically a small syntactical quirk. Undesirable, yes, but not what will make or break production software development. Lenses solve some of that and much more . Lenses strictly improve on fields/records/getters/setters/etc. in any other language you know. In other words, they accomplish what they do and then some. If that…

That was the most memorable issue I had with Haskell; thinking back, other stuff that bugged me was some of the idioms needed to move between pure and impure code. You may be right though, it's something I should probably revisit. It's been a couple years and I did end up taking some of the lessons learned from Haskell into other languages (mostly not at a low level, though -- it's more that Haskell informed how to approach some higher-level design problems). Railway-oriented programming in particular stuck with me as a _great_ pattern that's consistently useful across languages.

I still think it's worth learning by anyone who's got the time for it.

Post reply on HN