(define (quicksort lis)
   (cond ((null? lis) '() )
         ((null? (cdr lis)) lis)
         (else
           (let  ((new (partition lis)) )
             (append (quicksort (car new))
               (cons (car (cdr new))             ; pivot element
                  (quicksort (car (cdr (cdr new))))
               )
             )
           )
         )  ;else
   ) ;cond
) ; fun