I am a newbie for Erlang, I understand the language adopts a design of actor model and create the concept of light-weight process, which is key point for high concurrent programming. But, it also adopts the functional programming paradigm, which impose reference transparency. That means a variable can't be changed after assignment. So, I see lots of similar function like:
gb_trees:delete(Key, Tree1) -> Tree2
When we delete a key from a tree, we indeed create a whole new tree. Does this mean, we clone all remain nodes of Tree1 here under the hood ?
If so, is this language really suitable for high performance server development ?
Thanks !