;build-list si muzete naprogramovat obdobne, jako ve Scheme (jenom se misto letrec pouzije labels…)

(defun build-list (len fun)
  (labels ((build-list-helper (i)
               (unless (= i len)
                              (cons (funcall fun i) (build-list-helper (+ i 1))))))
                                  (build-list-helper 0)))

;nebo pomoci dotimes a setf (probrane na prvni prednasce)

(defun build-list (len fun)
  (let (result)
      (dotimes (i len)
            (setf result (cons (funcall fun i) result)))
                (reverse result)))

;elegantnejsi reseni nabizi loop (neprobira se ale v kurzu):

(defun build-list (len fun)
  (loop for i from 0 below len collect (funcall fun i)))