(defun range (a b &optional c) "Builds a range of numbers as Fortran and Matlab would do" (flet ((|:| (start step stop) (assert (and (<= start stop) (> step 0))) (loop for x from start to stop by step collect x))) (if c (|:| a b c) (|:| a 1 b))))