Wow~ It's very nice Kerry's BenchMarking tool
Here is my poor code. it will be very slow...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun KZ:SubList(lst stnum len / nlst c )
;----------------------------------------------------------------------------------------
;(KZ:SubList '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) 5 -3)
;(6 5 4)
;(KZ:SubList '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) 5 3)
;(6 7
;----------------------------------------------------------------------------------------
(setq nlst '() c 0)
(if (> stnum -1)
(progn
(if (not len) (setq len (length lst)))
(while (and (> (abs len) c) (< stnum (length lst)))
(setq nlst (append nlst (list (nth stnum lst))))
(if (> len 0)
(setq stnum (1+ stnum))
(setq stnum (1- stnum))
)
(if (>= stnum 0)
(setq c (1+ c))
(setq c (+ c (abs len)))
)
);while
)
);if
nlst
)