Terry,
How about this?
;; CAB 12/27/06
;; move i1 to i2 in list
;; Does not catch i1 or i2 <0 or > (length lst)
(defun MoveNth (i1 i2 lst / idx)
(setq idx -1)
(mapcar '(lambda (x)
(setq idx (1+ idx))
(cond
((= idx i2) (nth i1 lst))
((and (> i1 i2) (or (< idx i2)(> idx i1))) x)
((and (> i2 i1) (>= idx i2)) x)
((and (> i2 i1) (>= idx i1)) (nth (1+ idx) lst))
((> idx i2) (nth (1- idx) lst))
(x)
)
)
lst
)
)
PS Does not catch index out of range, i1 or i2 < 0 or > (length lst)