Haskell -- <del>138</del> 137 chars -- As a standalone program: r n=show n++s!!n s=" o'clock rock,\n":c:c:" o'clock, ":s c=", " main=putStr$(r=<<)[1..11+1]++"We're gonna rock around the clock tonight." Edit: I used to have a helper function <tt>o</tt> used to define <tt>s</tt> by s=o" rock,\n":c:c:o c:s;o=(" o'clock"++) but it turns out to cost 1 extra character. Is there any way to compress all of the "o'clock"s / "rock"s / "ock"s?