Skip to content

Instantly share code, notes, and snippets.

@t1anchen
Created December 13, 2012 06:12
Show Gist options
  • Save t1anchen/4274471 to your computer and use it in GitHub Desktop.
Save t1anchen/4274471 to your computer and use it in GitHub Desktop.
(defun distl (m N)
(cond
((null N) nil)
(t (cons (list m (car N))
(distl m (cdr N))))))
(print (distl 'b '(x y z)))
(defun cartesian (M N)
(cond
((null M) nil)
(t (append (distl (car M) N)
(cartesian (cdr M) N)))))
@t1anchen
Copy link
Author

t1anchen commented Jul 7, 2013

user> (= (reduce concat (map (fn [m] (map (fn [n] (list m n)) (range 10))) (range 10))) 
         (for [x (range 10) y (range 10)] (list x y)))
true
user> (reduce concat (map (fn [m] (map (fn [n] (list m n)) (range 10))) (range 10)))
((0 0) (0 1) (0 2) (0 3) (0 4) (0 5) (0 6) (0 7) (0 8) (0 9)
 (1 0) (1 1) (1 2) (1 3) (1 4) (1 5) (1 6) (1 7) (1 8) (1 9)
 (2 0) (2 1) (2 2) (2 3) (2 4) (2 5) (2 6) (2 7) (2 8) (2 9)
 (3 0) (3 1) (3 2) (3 3) (3 4) (3 5) (3 6) (3 7) (3 8) (3 9)
 (4 0) (4 1) (4 2) (4 3) (4 4) (4 5) (4 6) (4 7) (4 8) (4 9)
 (5 0) (5 1) (5 2) (5 3) (5 4) (5 5) (5 6) (5 7) (5 8) (5 9)
 (6 0) (6 1) (6 2) (6 3) (6 4) (6 5) (6 6) (6 7) (6 8) (6 9)
 (7 0) (7 1) (7 2) (7 3) (7 4) (7 5) (7 6) (7 7) (7 8) (7 9)
 (8 0) (8 1) (8 2) (8 3) (8 4) (8 5) (8 6) (8 7) (8 8) (8 9)
 (9 0) (9 1) (9 2) (9 3) (9 4) (9 5) (9 6) (9 7) (9 8) (9 9))
user> (count (map (fn [m] (map (fn [n] (list m n)) (range 10))) (range 10)))
10
user> (map count (map (fn [m] (map (fn [n] (list m n)) (range 10))) (range 10)))
(10 10 10 10 10 10 10 10 10 10)
user> (count (reduce concat (map (fn [m] (map (fn [n] (list m n)) (range 10))) (range 10))))
100
user> (count (for [x (range 10) y (range 10)] (list x y)))
100

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment