Added range function

Reimplemented iota via range
Added global *args* variable that contains program/script arguments
This commit is contained in:
Sanel Zukan
2008-07-18 12:34:35 +00:00
parent 192b61316b
commit 98b109176a
2 changed files with 39 additions and 9 deletions

View File

@@ -83,15 +83,27 @@
(else
(throw "Unsupported type in 'for' loop"))))))
;;
;; range function; returns a list of numbers in form [start end)
;;
;; Althought we could wrote this function cleanly without decrementors
;; using recursion call after 'cons', we would loose tail call optimization
;; yielding much slower function.
;;
(define (range start end)
(let loop ((s (- start 1))
(e (- end 1))
(lst '()))
(if (>= s e)
lst
(loop s (- e 1) (cons e lst)))))
;;
;; iota function; returns a list of numbers
;;
(define (iota n)
(let loop ((n n)
(lst '()))
(if (= n 0)
lst
(loop (- n 1) (cons n lst)))))
(range 0 n))
;;
;; function for easier timing