<story><title>Learning Elm by porting a medium-sized web frontend from React (2019)</title><url>https://benhoyt.com/writings/learning-elm/</url></story><parent_chain></parent_chain><comment><author>ISV_Damocles</author><text>The year in this link is very important. In the following year, the Elm team decided to not pay attention to the maxim &amp;quot;perfect is the enemy of good&amp;quot; and crippled their FFI story, making it impossible to actually use the language in production[1].&lt;p&gt;I would recommend to steer clear of a language that makes these sorts of decisions -- that certain features are off-limits to the regular developer because they can&amp;#x27;t be trusted to use them correctly -- because if you find yourself in a situation where you &lt;i&gt;need&lt;/i&gt; that to solve your problem, you&amp;#x27;re trapped. I included Go in the set of languages I would recommend steering clear of for years, due to their decision to allow their own `map` type be a generic[2] type but no user-defined types could be[3], leading to ridiculously over-verbose codebases, but they have finally corrected course there.&lt;p&gt;If you&amp;#x27;re looking for something kinda like Elm but not likely to break your own work in the future, I&amp;#x27;d recommend checking out ReasonML[4] instead.&lt;p&gt;[1]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;lukeplant.me.uk&amp;#x2F;blog&amp;#x2F;posts&amp;#x2F;why-im-leaving-elm&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;lukeplant.me.uk&amp;#x2F;blog&amp;#x2F;posts&amp;#x2F;why-im-leaving-elm&amp;#x2F;&lt;/a&gt;
[2]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;go.dev&amp;#x2F;blog&amp;#x2F;maps&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;go.dev&amp;#x2F;blog&amp;#x2F;maps&lt;/a&gt;
[3]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;go.dev&amp;#x2F;doc&amp;#x2F;faq#beginning_generics&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;go.dev&amp;#x2F;doc&amp;#x2F;faq#beginning_generics&lt;/a&gt;
[4]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;reasonml.github.io&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;reasonml.github.io&amp;#x2F;&lt;/a&gt;</text></comment>
<story><title>Learning Elm by porting a medium-sized web frontend from React (2019)</title><url>https://benhoyt.com/writings/learning-elm/</url></story><parent_chain></parent_chain><comment><author>jrvarela56</author><text>I tried Elm in ~2018 and it was delightful. Ended up checking it out bc it was mentioned as &amp;#x27;prior art&amp;#x27; in Redux&amp;#x27;s website. Didn&amp;#x27;t end up adopting bc everyone around me thought I was crazy to use something so niche.&lt;p&gt;It&amp;#x27;s the kind of thing that even if you don&amp;#x27;t end up using, you come out with lessons that make you a better programmer. Some that I remember:&lt;p&gt;- The compiler was fast, it made me aware that you could have an iterative workflow like most dynamic languages but driven by types&lt;p&gt;- The language&amp;#x2F;framework constructs  (views, updates, etc) made it clear what kind of functionality had to live where so it makes me aware to define roles&amp;#x2F;arch in React apps that are &amp;#x27;just components&amp;#x27;&lt;p&gt;- Error messages are just awesome, it was the clearest I had seen at that point and made me realize other languages just haven&amp;#x27;t paid enough attention to make them more usable</text></comment>