Something else I thought of in the shower: dynamic languages win in the little language department because they allow the developer to express a concept in the most appropriate syntax/semantics. For example, you're not stuck implementing go_around(person, community.get_block(13)). By dynamically adding/trapping attributes, and by overriding/subclassing builtins, you can write (Python examples):
- go_around(person, community.block[13]), or even
- go_around(person, community[13])
- person.go_around(community[13])
- blocks(13, person)
- community.blocks.13.tour(person)
- person.morning_walk += blocks[13]
...etc., any of which "does the same thing". This allows the designer to make a "little language" which is easier to use and extend. If you like TIMTOWTDI, you could implement them all simultaneously (but you probably shouldn't).