import : rnrs define range case-lambda : n ; one-argument syntax range 0 n 1 : n0 n ; two-argument syntax range n0 n 1 : n0 n s ; three-argument syntax assert and for-all number? : list n0 n s not : zero? s let : : cmp : if (positive? s) >= <= let loop : i n0 acc '() if cmp i n reverse acc loop (+ i s) (cons i acc) display : apply string-append "" : map number->string : range 5 newline