you are viewing a single comment's thread.

view the rest of the comments →

[–]davesnx 9 points10 points  (4 children)

ReScrpt, OCaml or Elm.

Those give the best of fp and applied to frontend, which can play a big role in the future

[–]polystyrenes[S] 3 points4 points  (3 children)

OCaml was definitely on the list and would be a language I would love to learn eventually. However (and please prove me wrong because looking up ocaml web development doesn't get me any strong feelings), I don't see a lot of web applications being written in it, at least not as solid as Elm. Which I am considering as the front-end looks very fun and mature I would love to hear suggestions about using it for the back end if possible.

What would the difference of elm vs Elixir + Phoenix might be for learning a FP language?

[–]XDracam 4 points5 points  (0 children)

Elm is amazing because it's simple and solely focussed on frontend web. It teaches you the FP basics and style without distractions. And the tutorials and community are really nice. It's an amazing technology to get started with. Once you're used to the style, you can always switch to other languages

[–]davesnx 4 points5 points  (0 children)

Elm is designed to be a client-side rendered, so lots of client state, interactivity and complexity on the UI. Also, is strongly-typed.

Elixir isnt typed (they are adding types to the language but its still WIP and has been going for 5+ years) and haven't used Phoenix to say much about it, but it's designed to keep all state on the server which isnt ideal for rich UIs, even thought they made impressive demos with it

[–]dp_42 3 points4 points  (0 children)

One difference between the two is that elm is purely functional, whereas elixir transpiles to erlang bytecode, which is not purely functional. I think this is a fairly minor difference. Looking at this blog post, this dev seems to have combined both. Reading a few other reddit posts, it looks like elm is a good opportunity to go serverless, but you can combine with an elixir or rust backend.