Difficulty Understanding Program

I think you will get a better picture of how receive works when reading the chapter on Processes (chap 15), in the meantime you can just consider that this is a way of sleeping.

He could probably as well have used the built-in function :timer.sleep/1, e.g. seconds |> :timer.seconds() |> :timer.sleep().

The use of receive here is not very clear about the intent, but it is basically listening for a message that is never going to come (no call to send anywhere) with a timeout of seconds, after which it returns.

2 Likes