It makes the code icky and hard to debug, and you can simply return new
immutable objects for every state change. EDIT: why not just create a new object
and reassign variable to point to the new object
Fear of unfamiliar syntax. This is utterly bogus, but I can bet you that if rust used python style layout and haskell style type signatures, it would still be incredibly niche. Something can wipe the floor with the competition, be rock solid, stable and blazingly fast, but if it’s unfamiliar it will be niche. See elm for front end, for example.
It’s not OOP. The idea that OOP is simpler and solves the interdependency problem persists literally decades after it became painfully clear that it does not. Abstract singleton class factory pattern anyone?
Steep learning curve and math terminology. It’s not called mappable or container, it’s called functor. It’s not called multimappable, it’s called applicable. It’s not called sequenceable, it’s called monad. It’s not called sequence stack or effect stack, it’s called monad transformer stack. This scares folks no end. (Elm did not make this mistake.)
Fear of the difficulty of recruiting - it can be really hard to recruit good programmers in popular languages, so wouldn’t it be even harder to recruit in less popular languages because fewer people know them? No. It turns out that offering coding jobs that are based in languages that people genuinely love coding in is a massive selling point for your company, you’ll get people who are very invested applying, and a lot fewer atrocious candidates from third parties.
Steep learning curve and math terminology. It’s not called mappable or container, it’s called functor. It’s not called multimappable, it’s called applicable. It’s not called sequenceable, it’s called monad. It’s not called sequence stack or effect stack, it’s called monad transformer stack. This scares folks no end. (Elm did not make this mistake.)
God damn I wish we could send you back in time to when whatever idiot came up with monad etc. so you could slap some sense into them!
To be fair, it’s not my insight there, it’s Evan Czaplicki’s.
I should have added lenses. Just when you think you’ve mastered everything because you finally understand what a zygohistomorphic prepromorphism is (but also why your mentor told you that it wasn’t important), along comes the next mathematical abstraction, and that’s perfectly normal for haskell, but this one comes with 200 new operators to memorise and it feels like you were getting to grips with the Greek alphabet when suddenly it would be really helpful if you could also read Chinese characters.
Fear of unfamiliar syntax. This is utterly bogus, but I can bet you that if rust used python style layout and haskell style type signatures, it would still be incredibly niche. Something can wipe the floor with the competition, be rock solid, stable and blazingly fast, but if it’s unfamiliar it will be niche. See elm for front end, for example.
But the weird thing to me is that Rust’s syntax is also pretty familiar unfamiliar since it is (just to start) heavily inspired by ML. Does it really just come down to the fact that it has mandatory curly braces and semicolons? It just seems weird to me that this should be the sticking point for people.
Edit: Oops, wrote “familiar” when I meant “unfamiliar”.
God damn I wish we could send you back in time to when whatever idiot came up with monad etc. so you could slap some sense into them!
To be fair, it’s not my insight there, it’s Evan Czaplicki’s.
I should have added lenses. Just when you think you’ve mastered everything because you finally understand what a zygohistomorphic prepromorphism is (but also why your mentor told you that it wasn’t important), along comes the next mathematical abstraction, and that’s perfectly normal for haskell, but this one comes with 200 new operators to memorise and it feels like you were getting to grips with the Greek alphabet when suddenly it would be really helpful if you could also read Chinese characters.
A lot of these operators are things like
+=
and-=
, though, which should not be too hard to remember if you are familiar with C-flavored languages.But the weird thing to me is that Rust’s syntax is also pretty
familiarunfamiliar since it is (just to start) heavily inspired by ML. Does it really just come down to the fact that it has mandatory curly braces and semicolons? It just seems weird to me that this should be the sticking point for people.Edit: Oops, wrote “familiar” when I meant “unfamiliar”.