DISCLAIMER: Sorry, there is no content on ACID here.
I love the Erlang programming language.
It is a kind of functional programming language, but it is not the reason why I love it.
It is based on communication. That's real. So I love it.
'Lazy evaluation' is a bad conception, I think.
An evaluation is a transaction between a caller and a callee.
In Quantum Physics, 'entangled state of quantum model' is encapsulated most of the case.
Non-deterministic logic is hard to implement (easy to make a permutational / combinational explosion).
Functional language also have same weak point in pattern matching / search trees.
So, real power in Erlang is to make enoumerous number of process(agent)s and support their overwhelming scale of communicaiton.
The magic is there in the simpleness of messages and actions.
Each message goes to requester.
Requester wants messages which he can process only.
The reasons to separate message and process are,
3) thin connection API
Call tree is just a tree. Not so flexible structure than N x M producer/consumer model.
Now I need more flexibility than N x M connection mesh, especially in time dimension. But extending that way is rather easy for me with Erlang. That is the most important feature for me, right now.