shuffle added by mario-goulart on Mon Jun 9 15:17:50 2014

(define shuffle
  (lambda (l random)
    (let ((len (length l)))
      (map cdr
          (sort! (map (lambda (x) (cons (random len) x)) l)
                 (lambda (x y) (< (car x) (car y)))) ) ) ) )