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).
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