(def range (st en (o step 1)) (if (is step 0) (= step 1) (zap abs step)) (let (stp-fn test) (if (> st en) `(,- ,<) `(,+ ,>)) ((afn (i) (if (test i en) nil (cons i (self (stp-fn i step))))) st)))