The first call of maybe_three prints: Breakfast, lunch,
dinner. The second call prints: "Is it four?" says, Do not
pass go.

Many variations on this are possible, not just functions! What makes this
example work nicely is delegation—the
magical by keyword— for the general feature of naming
things by overriding toString(); and for the function
delegated to, the elegant lambda
(anonymous function) syntax for the last parameter. You can delegate
anything, not just functions, so you could make named maps, named business
objects, et al, by using delegation on existing types without
needing to change them.