Just losing the while loop was a big one for me. I miss it often. I know the cost of calling something recursively. It's never going to be as cheep as a while loop.
There is Enum.reduce_while that I've used a couple times.
But I don't remember using while loops all that much (for loops/iterators, yes, but not while loops) in other languages.
I think I had a tougher time with the immutable stuff than anything else. I'd love to just update a map 3 levels down by saying thing.other.stuff = "new value" sometimes, but you can't. But overall it's nice to work with immutable structures.
Instead I either do a deep merge or use put_in(map, ["thing", "other", "stuff"]) but that doesn't always work as I expect.
If other elixir devs can set the record straight, I'd appreciate it :)
Some times I miss being able to do updates in the way you described.
Have you seen Pathex? https://github.com/hissssst/pathex
It may not be what you are looking for. But I think it may improve developer experience in some circumstances.
That depends on the compiler and lang implementation. What you are saying is true for Java or imperative langs. It's not true in langs like OCaml who has ergonomics around functional programming. while loops are just as performant as recursive functions and HOF.
But I don't remember using while loops all that much (for loops/iterators, yes, but not while loops) in other languages.
I think I had a tougher time with the immutable stuff than anything else. I'd love to just update a map 3 levels down by saying thing.other.stuff = "new value" sometimes, but you can't. But overall it's nice to work with immutable structures.
Instead I either do a deep merge or use put_in(map, ["thing", "other", "stuff"]) but that doesn't always work as I expect.
If other elixir devs can set the record straight, I'd appreciate it :)