The line "erlang has no mutable data structure" made me think about something :
Couldn't you imagine a language with data structure that are mutable from within a same single thread only and requires message passing when communicating between threads ?
Now that i think of it, I wonder if golang isn't doing just that.