I like the notation "<-" instead of "." Here's why: "<-" looks like sending a message. "." looks like a scoping construct.
Thus, to my brain, "." implies synchronicity: Invoke this function and continue with the result, it's just that the language implementation will do some fiddly stuff to look up the function's implementation in an inheritance hierarchy at run time.
Whereas "<-" implies asynchronicity: Send this message to this independent entity that has its own memory, processor, whatever. If you need a reply, send a continuation along with it, a'la current Javascript style.
You've almost just described E (http://erights.org). The recipient of a message sent with "." must be in the same E process (called "vat"), while with "<-" the recipient may be remote (but needn't be) and the value we immediately continue with is a promise for the eventual result. (Each vat receives one message at a time and runs it to completion before taking the next off the queue, Actors-style.)
This was the language that taught me what Kay was talking about.
I've felt for a long time that the tendency to equate "sending a message" and "calling a function/method" has caused a lot of problems - one is more like IPC/RPC and the other is something that happens within the local context (process/thread/etc.).
Thus, to my brain, "." implies synchronicity: Invoke this function and continue with the result, it's just that the language implementation will do some fiddly stuff to look up the function's implementation in an inheritance hierarchy at run time.
Whereas "<-" implies asynchronicity: Send this message to this independent entity that has its own memory, processor, whatever. If you need a reply, send a continuation along with it, a'la current Javascript style.