; maximum product

(define (max-prod xs ys zs)
  (let ((min-x (apply min xs)) (max-x (apply max xs))
        (min-y (apply min ys)) (max-y (apply max ys))
        (min-z (apply min zs)) (max-z (apply max zs)))
    (max (* max-x max-y max-z)
         (* max-x min-y min-z)
         (* min-x max-y min-z)
         (* min-x min-y max-z))))

(display (max-prod '(10 -10 15 -12) '(10 -12 13 -12) '(-11 -10 9 -12)))