
(define (printlist l)
  (if (null? l)
    '() 
    (begin (print (car l))
           (newline)
           (printlist (cdr l)))))

(define (sumlist l)
  (if (null? l)
      0
      (+ (car l)
         (sumlist (cdr l)))))

(define (myMap fk l)
  (if (null? l)
     '()
     (cons (fk (car l)) 
           (myMap fk (cdr l)))))

; 'let' dovoluje pekne definovat lokalni promenne,
; 'letrec' definicim dovoluje na sebe odkazovat.
(define (qs l)
  (if (null? l)
      '()
      (letrec ((pivot (car l))
               (mensi (filter (lambda (x)
                                      (< x pivot))
                              (cdr l)))
               (vetsi (filter (lambda (x)
                                      (>= x pivot))
                              (cdr l))))
              (append (qs mensi)
                      (cons pivot
                            (qs vetsi))))))
