: bottles ( n str -- str ) swap { { 0 [ "no" " bottles" ] } { 1 [ "1" " bottle" ] } [ present " bottles" ] } case surround ; [ 10 1 [a,b] [| n | n "" bottles " of beer" append [ % " on the wall, " % ] [ % "!\n" % ] bi "Take one down, pass it around, \n" % n 1 - " more" bottles % " of beer on the wall!\n\n" % ] each ] "" make print nl