diff --git a/lisp/random/array.lisp b/lisp/random/array.lisp index f68942d..4c73904 100644 --- a/lisp/random/array.lisp +++ b/lisp/random/array.lisp @@ -11,8 +11,9 @@ (eval (fuse ',index-prefix i))) (:set (i value) - (if (< i ,length) - (set (fuse ',index-prefix i) value))) + (if (and (< i ,length) (> i -1)) + (set (fuse ',index-prefix i) value) + (call ,this :get i))) ;; show error (:length () ,length) @@ -24,7 +25,7 @@ (recur (rest indices) (cons - (list (first indices) (call ,this :get (first indices))) + (call ,this :get (first indices)) accumulator)))) (reverse ',indices) nil)))))))