Smalltalkならflat関数なんて

Object>>flatDo:
flatDo: aBlock
aBlock value: self

Collection>>flatDo:
flatDo: aBlock
self do:[:elem|elem flatDo: aBlock]

だな。
(elem isKindOf: Collection) ifTrue: [...]なんて馬鹿なコード書いたら
世界中のSmalltalkerに大笑いされるw