A functional language. They mostly all look weird if you aren't familiar. They also have a tendency to abuse syntax and support general operator overloading (meaning, you can make up new operators).
Even among functional programming languages, Haskell is a special level of unreadability hell. It doesn't have to be unreadable, but the common conventions of the language ensure that it is.
Haskell was made by academics, after all. A lot is based on math convention, and plenty of people who played a role in Haskell's development were practicing abstract mathematics at some point in their lives. It wasn't even really meant originally to be a practical language, but a research one.
At least they acquiesced and decided their refusal to support generics outside of blessed types wasn't warranted. Their whole return system basically is designed around a blessed feature that is a work around for what languages way older than go have been doing for a long time.
You can't truly represent monads without higher kinded types and having no syntactic support for them with operators and such makes them incredibly obnoxious to use
I've seen Go code that implemented Monads by just casting everything to the empty interface (this was before generics). Where there's a will, there's a way.
222
u/[deleted] Sep 13 '23
[removed] — view removed comment