LINUX.ORG.RU

История изменений

Исправление Nervous, (текущая версия) :

А для произвольного количества списков?

Трах-тибидох!

(define cartesian-product-2
  (lambda (f xs ys . rest)
    (map (lambda (pair)
           (apply f pair))
         (apply cartesian-product
                (append (list xs ys) rest)))))
(cartesian-product '(1 2) '(3 4) '(5 6))
;; => '((1 3 5) (1 3 6) (1 4 5) (1 4 6) (2 3 5) (2 3 6) (2 4 5) (2 4 6))

(cartesian-product-2 max '(1 2) '(3 4) '(5 6))
;; => '(5 6 5 6 5 6 5 6)

Исходная версия Nervous, :

А для произвольного количества списков?

Трах-тибидох!

(define cartesian-product-2
  (lambda (f xs ys . rest)
    (map (lambda (pair)
           (apply f pair))
         (apply cartesian-product
                (append (list xs ys) rest)))))