(bind-func range:[List{!a}*,!a,!a,!a]*
(lambda (start end step)
(if (<= step 0)
(begin (println "Problem in call to range: step must be positive")
null)
(let ((val start)
(result null))
(while (< val end)
(set! result (cons val result))
(set! val (+ val step)))
(reverse result)))))