5 ms·
If you are interested in learning a purely functional language, I'd recommend against picking a dynamically typed language like Elixir. Functional programming
by hota_mazi 9y ago
If you are interested in learning a purely functional language, I'd recommend against picking a dynamically typed language like Elixir.
Functional programming only starts to show its power with types and parametric polymorphism (higher kinds, etc...). Without type annotations, all you get is a watered down, crippled version of what a functional language can achieve.
- Arcsech 9y agoWell first, Elixir isn't purely functional. It's got side effects all over the place, it just doesn't have mutable variables. Second... While I love static typing as much as the next guy, there's definitely value in immutable data in a dynamic language. You also get Dialyzer in Elixir/Erlang, which is an interesting alternative to the usual type systems you find in Haskell/Rust/etc. in that it focusses on finding places where there's provably a problem, rather than where it's not provably correct.
- hota_mazi 9y ago> there's definitely value in immutable data in a dynamic language. Sure, but there's even more value in immutable data in a statically typed language, because of all the advantages that come with such a language (automated refactoring, better performances, tooling, etc...).
- OvermindDL1 9y agoI've been working with the BEAM (via Erlang) for over a decade, and with Elixir for almost 1.5 years, and I'd still give up, well, probably my current job if I could get a fully Hindley-Milner Typed Elixir...
- regulation_d 9y agoI've always assumed that a statically typed Elixir would look a lot differently, especially, vis a vis, macros. Is that a fair assumption?
- rlander 9y agoI guess your job is mine now :) https://github.com/alpaca-lang/alpaca https://github.com/alpaca-lang/alpaca
- deedubaya 9y agoYes, mis-typed when I typed purely functional. My intent was to lean closer towards mostly-functional languages than languages which _can_ be written in a functional style (a la JS or Ruby). I should know better than to use the word "pure" on the internet, someone will always correct how inaccurate my usage is :)