Data source: http://rosettacode.org/wiki/First-class_functions/Use_numbers_analogously