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 :)