The classes serve to close some functions over variables for convenience; the attr_readers serve as destructuring functions for convenience; the += replaces a recursive function for convenience and familiarity. The function with the += doesn't mutate any value and it remains pure from all callers' perspectives.
You're complaining about syntax, but this screencast is about semantics.
You're complaining about syntax, but this screencast is about semantics.