reduce a lot of complexity by treating robots as indivisual atoms...

... instead of keeping a mutable list of robots (like you would in
Ruby).
name generator is an atom, not ref.

Since that's the only mutable thing we have and there is no need to
coordinate it's changes with other things.