The Erlang Rationale (PDF)

This is a 12 page booklet/pdf from @rvirding, and here’s a post he wrote about it on (from EF):

https://drive.google.com/file/d/1zKsOgwZJ_YZ1bY3b3gNRjAxpn6VneR8b/view

Related: Robert’s interview here is worth checking out too - he talks about the Erlang Rationale and quite a bit more :023:

12 Likes

I can’t get access to Google Drive in China. sad~~ Is this article available anywhere else ?

2 Likes

I’ve uploaded a copy to the forum for you, please let me know when you’ve downloaded it and I’ll remove it :023:

3 Likes

I have downloaded it, thank you very much !

2 Likes

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)

3 Likes

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.

3 Likes

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. :sweat_smile:

2 Likes