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.
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é
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.