spawn con una función llamada loop() la cual se ejecuta de manera recursiva, para siempre quedar en espera de un nuevo mensaje que haga match con los patrones definidos. Dichos mensajes se pueden acceder desde el buzón de mensajes que tiene cada proceso en BEAM con la construcción de Elixir/Erlang llamada receive.Seguido de la creación del proceso con spawn y de que se queda en espera, se envían dos mensajes al proceso recién creado. Accedemos a él pasando el PID del proceso al cual le queremos enviar dicho mensaje. Por ejemplo, si pasamos la tupla con: send(pid, {:saludo, "Hola desde el proceso principal"})
Se recibe en la función loop antes creada por el nuevo proceso, la cual hace match por el átomo :saludo y, por consiguiente, imprime: IO.puts("Proceso recibió: #{msg}")
Inmediatamente seguido de esto hay un evento recursivo para quedarse esperando un nuevo mensaje al proceso.
En mis anteriores aproximaciones al lenguaje me había costado más trabajo entender estas primeras lecciones, y ahora lo estoy realmente disfrutando. Además, el código y la sintaxis se ven super limpios y bonitos.
hiram