I'm using elm so I don't have to learn any of these things. I enjoy knowing almost all parts of the language.
Also, in 95% of the cases, it provides enough flexibility to solve the task at hand.
The problem is in the last 5% though. If Evan thinks it's a bad idea or requires more thought, you literally can't do it. The websocket package is currently being held hostage because he wants to improve the API. Since you can't include native code even in private projects now, you can't fork and fix numerous bugs that have an open PR for 2 years+. That means I have to stick with 0.18 which has several compiler bugs because 0.18 is not gonna get a bugfix release.
I don't think it's 5% though. In my feeling it's like 30%. File stuff alone is huge. How about localStorage and other web stuff (yeah websocket and friends)
Anything port talks to is NOT Elm. Any custom element is also NOT elm. I really like some smart people in Elm community, they are kind. But I think they are like 3% of all. The real problem is development process and communication.
It's a good demonstration of how nobody can resist a good lynch mob no matter how ridiculous the topic.
It's absolutely hilarious how Elm of all things was the #1 enemy of HN the last couple days. A language just about nobody uses (except me).
Yet suddenly everyone is just three degrees away from someone else who was irreparably wronged by Elm's creator. People coming out of the woodwork to show that they, too, are offended by such reprehensible behavior like removing a couple features from a programming language.
Web developers are literally the most oppressed people on the planet. This Evan guy messed with the wrong motherfuckers!
On the contrary, I read the referenced post like: “keep Elm weird” as a play on “keep Austin weird” (Portland, etc.) and thus chill came across as more of a “Netflix and Chill” sort of “don’t worry about it”.
Someone’s always going to get bent out of shape (<— I expect I’m creating a demonstration of that right here) with language usage, but please don’t write like a computer when talking with humans so as to avoid these sorts of remarks.
“chill” coming across as “Netflix and chill” would still be squarely in the offensive manner of its usage though — the presumption that the parent comment was too tightly wound or something, and thus needs to “chill” (relax in some capacity). It undercuts the parent comment.
It’s kind of like interrupting someone when they are trying to make a point that is important to them by saying, “hey, you’re having a bad hair day” and then acting like this shouldn’t impact the confidence they have in their point.
"Just use javascript" to workaround the many language limitations then? :D
In that case, why not use typescript for everything? Being pure is nice and all but it's not a goal in itself, especially if the language is extremely limited as a result.
I've quickly learned that I much more enjoy scrapping redundant code and relying even more on the type system, with things like Higher-kinded types, GADTs, etc.
Elm for me fills the niche of stepping stone into Pure FP (pure as in purity). It's a language I would be able to convince my coworkers to try out, and once they've gotten their feet wet, they can move onto PureScript or GHCJS.
The reason why stopping at Elm, IMHO, is bad, is that it does not foster innovation and trying out things, but restricts itself purely to the subset of what the core team has discovered/learned. This makes it impossible to try out new exciting things like this "A proof-of-concept UI library based on the incremental lambda calculus"[0] that does away with the need for VDOM diffing, and other interesting things.
Don't get me wrong, there is certainly appeal to having a simple language that everyone can quickly master (like Go), but it isn't the be all end all.
I mainly use Elm these days because it does exactly what it says on the tin: it helps me build robust client-side applications and fight off technical debt, which is a harder problem to solve than accumulating abstractions.
It's kind of like how Java and Go are shitty when all you want to do is masturbate over clever solutions, but there's something to appreciate about them for that same reason.
Not to mention it actively removes features that are heavily used. An egregiously disrespectful way to treat your library authors and community members, frankly.
Haskeller here. I don't want to use Elm myself, but I think this is really unhelpful. Elm is bringing new people to static functional programming environments that emphasize immutability, purity, algebraic data types, pattern matching and a lot of other great features. Yes, writing serialization instances by hand over and over is a huge drag, and like, there is a better way. But the better way doesn't need to include condescending mockery.