func letter_frequency(File file) { file.read.chars.grep{.match(/[[:alpha:]]/)} \ .group_by {|letter| letter.downcase} \ .map_val {|_, val| val.len} \ .sort_by {|_, val| -val} } var top = letter_frequency(File(__FILE__)) top.each{|pair| say "#{pair[0]}: #{pair[1]}"}