e use the `spawn` function, which takes a function
# as argument.
f = fn -> 2 * 2 end #=> #Function&lt;erl_eval.20.80484245>
spawn(f) #=> #PID&lt;0.40.0>

# `spawn` returns a pid (process identifier), you can use this pid to send
# messages to the process. To do message passing we use the `send` operator.
# For all of this to be useful we need to be able to receive messages. This is
# achieved with the `receive` mechanism:
defmodule Geometry do
  def area_loop do
    receive do
      {:rectangle, w, h} ->
 