История изменений
Исправление 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)))))