Here's an alternative, more "mappy" definition using the cl-format
function I posted earlier:

(defn multipication-table [limit]
  (let [nums (range 1 (inc limit))]
    (cl-format true "~{~{~4d~}~%~}"
             (map #(map % nums)
                  (map #(partial * %) nums))))))


user> (multipication-table 12)
   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

(These line up in columns in a fixed width font :-))

This is nice because there's no loop/recur to think about and the
computation is separated from the printing. It's all first-order.

Tom

P.S. The cl-format post was here: 
http://groups.google.com/group/clojure/t/cc0b2b0a2cedec40

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to