(define range
(lambda args
(cond ((= (length args) 1)
(make-list-with-proc (car args) (lambda (i) i)))
((= (length args) 2)
(make-list-with-proc (- (cadr args) (car args)) (lambda (i) (+ (car args) i))))
((= (length args) 3)
(make-list-with-proc (/ (- (cadr args) (car args)) (caddr args))
(lambda (i) (+ (car args) (* i (caddr args))))))
(else (println 'bad 'range!) '()))))