loading...

Why are you learning Elm?

dwayne profile image Dwayne Crooks ・1 min read

I thought it'd be interesting to find out why you all are learning and using Elm.

I'd start.

  1. I have an interest in typed functional programming and Elm makes it super easy for me to explore my ideas and build them.

  2. I'm feeling the pain maintaining and adding features to a large legacy code base—containing a mixture of Backbone and React/Redux written in JavaScript—and I clearly see how the benefits of Elm could improve the situation. You can't imagine the simple bugs that occur that sometimes take us hours to fix. Those times can be demoralizing.

  3. Elm is my gateway drug. It made me see all the other typed functional programming languages from a different perspective. I started to see just how powerful the core of Haskell (i.e. Haskell without all those fancy and confusing extensions) really is. I started to understand the pattern that monads abstract. I started to feel excited about programming again. It's because of Elm I was finally able to build my first command-line app in Haskell.

And you?

Posted on Aug 7 '19 by:

dwayne profile

Dwayne Crooks

@dwayne

A full stack web developer who has an interest in programming language theory, interpreters, compilers and type theory. I enjoy programming with Elm and Haskell in my free time.

Discussion

markdown guide
 

I spent some time trying to learn Elm.

What I walked away with was an appreciate for the architecture. But I hated the syntax. It seemed like the syntax was unnecessary. Something more familiar would have been better.

Otherwise the architecture pattern was amazing. Just reading it made me learn more and gave be a clear point of view.

 

But I hated the syntax

That's bikeshedding, my friend!

Some people like it, some people don't. But should your like or dislike of syntax impact your decision to adopt a language? Not if the distinction between syntaxes doesn't impact productivity, learning curve or other objective criteria.

The syntax is (mostly) unimportant (see point above). It's like telling someone you don't agree with them because of the sound of their voice. It's super subjective. As as engineers, we shouldn't be swayed to make decisions based on subjective criteria!

 

On point.

I feel the same way as well, i.e. syntax is mostly unimportant. It is the least important part of choosing a programming language.

However, I didn't feel that trying to convince any random person on the internet of that was worth my time so instead I tried to empathize with him because, let's face it, we've all been there (i.e. hating syntax) at one point or another.

It's interesting to note though that in the history of mathematics notation (i.e. syntax) has always been an issue:

  1. We took Leibniz's notation over Newton's for calculus. ref
  2. We dropped Frege's notation for something more convenient. ref
  3. And on and on.

But we always accepted the underlying ideas and concepts when we deemed them worthy of consideration.

 

You might like Mint then :) It should feel more familiar than Elm, but has the same feeling to it otherwise (typed, quick, safe).

 
 

I actually enjoy the syntax very much. It is so simple.

 

I can see the appeal, I just feel that it has some unneeded changes. Too many array structures and hard to follow.

That being said, my biggest issue is the HTML output in arrays. The method and flow part of the architecture makes perfect sense!

It can be difficult to do but I try not to get hung up on syntactic issues especially when other features of the language bring huge benefits.

I just feel that syntactic and readability is part of the developer experience.

Like I said, I’m the concept has a lot of great benefits. The choice to change the syntactics was stylistic and that I didn’t agree with.

If it ever releases with a cleaner easier to read syntax I would revisit it easily.

Thinking about it a little more, I feel the same way as well. I guess we just have different tastes when it comes to syntax and readability. But that's fine.

 

When it compiles I know it's not broken. It might not be doing what I want it to be doing... but I know its not broken. This is just such a freeing feeling compared to dynamic languages. Totally sold / hooked.

 

Freeing indeed. I know all my code is checked at least once (due to the compiler). In JavaScript you'd have to write a test to make sure that the code can at least run (no misspelled variables etc).

 

I think I learned Elm for all the same reasons you listed.

Also am just tired of maintaining giant react apps that are slow and full of bugs.

Trying to evangelize Elm at work as much as possible these days in hopes of writing Elm full-time

 

Trying to evangelize Elm at work as much as possible these days in hopes of writing Elm full-time

How do you go about it?

 

Making short presentations with demos, benefits/advantages over React. Sharing my blog posts about it, and overall just talking about it with coworkers

Nice.

Is there a part of the app that you're working on that's been a constant source of bugs?

Maybe you can rewrite it in Elm to make an even stronger case for using it.

I like the approach Evan recommends here.

... it is important to be strategic in choosing your first project. Do not just write Elm code because you like it. Fix a problem.

 

I want to make and design websites. But the current model of javascript, html, css, react, yarn, gulp, travis, etc. etc. It all seemed absolutely impenetrable, confusing, and frustrating.

Functional programming, and in particular, Elm's extremely safe and sturdy framework, provided a solid foundation to learn, while letting me get real results from the very get-go. I cannot understate how important the help of the elm community has been as well. The slack/reddit/twitter community have been extremely helpful.

I am rarely an early adopter, and I'm not sure if this counts, but I am definitely on the Elm train for the foreseeable future.

 

So I wouldn't complain about TypeScript later on.

dev.to/parkroolucas/typescript-is-...

It's a well designed language and is worth learning just because of that. It has a great ecosystem and I think the language will be only better in the future. Unlike JavaScript which is just a bullion of million things.

 

P.S. JavaScript has its own place (for me you can quickly hack something with it).

 
 

That's cool as well. Care to share your reasons why?

 

Mostly not knowing what I'd use it for. It's just not a language I've invested time in finding out about.

For front-end UI development. Single-page web apps or for little widgets on the page.

What are you building? Elm could be a fit.

Node/Python/PHP APIs, React/Angular Frontends. Some native JS on CMS templated/legacy sites.

Is it similar to how you might use Typescript?

They're similar in the sense that TypeScript and Elm are both programming languages. But different in the features they emphasize. They make and value very different tradeoffs. And so depending on the tradeoffs that make sense for your projects you'd choose one over the other.

React/Angular frontends can be built entirely with Elm and the Elm architecture. With TypeScript you'd still be using React/Angular except you'd be writing it with TypeScript.

Alright I'm in.

The Elm Architecture looks really cool.

 

I always wanted to learn a functional language that I could use at my side project and eventually incorporate it into my development stack.

Elm felt like a glove for me to fill that spot.

I like the feeling of coding it, the language patterns, and the way how the HTML elements are treated inside the code.

 

I wrote some things about why I would like to really get to know #elm intimately here: archbee.io/blog/10-open-source-tec...

 

And did you get a chance to really get to know Elm? How was it?