range

Die Funktion range erwartet zwei Argumente und wertet diese aus. Bei den Argumenten muss es sich um ganze Zahlen handelt. Das Resultat des Funtionsaufrufs ist eine Liste von aufeinanderfolgenden ganzen Zahlen beginnend mit dem ersten Argument einschließlich und bis zum zweiten Argument ausschließlich.

> (range 1 4)
(1 2 3)

> (range -2 3)
(-2 -1 0 1 2)

> (range 2 2)
nil

> (range 3 2)
nil


Die Funktion range basiert auf if, less?, cons und +.

(defproc range (from to)
  (if
    (less? from to)
    (cons from (range (+1 from) to))
    nil))