Wonderful article ! Here are something that impressed me:
The reason why Port is designed as a different term from Pid.
We finally decided to make them a separate data type as we felt that
there could be times when it might be necessary to be able to detect if we were
communicating with a process or a port
And the fact that Erlang has no variable scoping (which I didn’t realize)
One of the things which Erlang inherited from its Prolog beginnings was its variable
scoping, or rather lack of variable scoping.
Actually I like the lacking of variable scoping. I know fun expression and list comprehension can create scope inside function, which make things a little bit non-consistent.
But compared to other languages, who have let, {}, begin...end for creating sub-scoping, Erlang is still much simpler as function is the only way to create a scope.
(I always consider list comprehension as a plugin-feature of a language because they look so different and I rarely use it in my code)
I learned how to use list comprehensions as a side effect of learning how to use the qlc module to simplify Mnesia queries. I then realised I could reapply this knowledge to Python.
Yes ~ List comprehension is indeed convenient and useful, but I just can’t enjoy the idea. I mean, recursion is a beautiful idea, while list comprehension is not. I use qlc when manipulating Mnesia, but I can’t say I like it, it more like there is no better choice so I have to use it.