I knew it!
Definitely pattern matching. Its the number one thing I wish I had when using other languages.
I do love the pattern matching, but Iâd have to give it a close 2nd place to the concurrency model. Itâs the first sane one Iâve seen.
Of Elixir itself (ignore the BEAM parts), hmm, the macroâs probably.
Of the BEAM, the CPS, most definitely. It performing CPS allows for the magical actors that we have now. ^.^
For me, beyond doubt the most important feature of Elixir is the fact that itâs powered by BEAM
Putting BEAM aside, Iâd pick the convention of passing the main data (aka âobjectâ) as the first argument, which I personally prefer much more than the Erlang convention (object as the last arg, except exceptions ).
Protocols! Really donât know why but I just love making me structs and protocols
Pattern matching specifically in the function head (also my fav feature in haskell/idris/purescript). I have never been a fan of if statements/expressions in any language because of the friction of attaching a label to WHY you are doing conditional logic (which would be the name of the function that is patterned matched in the function head).
Itâs a simple dispatcher, if you are curious in arbitrary Protocolâs over any âshape/typeâ and not just âtypeâ I have a protocol_ex library on hex that outperforms Elixirâs even on basic type tests. ^.^
This is a big thing regardless of the language, if it supports this then it is a huge boon to productivity!
Not necessarily a feature but my favorite aspect of Elixir the culture of explicitness. Much better than lots of magic or implicit behavior.
This forum!!!
Itâs almost like ElixirâŠis the perfect stormâŠnot slowed down by dogma⊠but enhanced by practicalityâŠmerged together by Joseâs vision and building the best programming language in the worldâŠ
The awesome community & leadership. Second to none.
Itâs got to be Elixirâs hierarchical name-space and module system for me
i love everything in elixir. easy and relaxing syntax, pipes, guards, exunit, pattern matching, genserver, mix, functional programming. Iâm feeling so happy whenever i code elixir, plus i have nothing to worry about performance.
but i would like to highlight two things that are so important that they save a lots of my time writing elixir code: typespecs and the new code formatter. We probably need to make them community best practice.
We use typespecs for all functions but I still donât know how to enforce them or what they really bring to the table in practice.
Can you elaborate on what typespecs give you? For us, itâs just visual clarity of the types a function is expecting.
With typespecs, not only you get visual clarities, but you can get more with dialyxir.
immutable data as much as pattern matching for me
to be blunt, I would miss pattern matching and immutable data even with José
JoĆe valim
From a ruby ninja to elixir creator. Whatâs coming next.
I also liked pattern matching, but it came along with erlang.
I would say the combination of function overloading and pattern matching in the function head. As far as I know that combination is unique to erlang and elixir.