transcendental-lisp/lisp/random/array.lisp

14 lines
405 B
Common Lisp

(defmacro array (size)
`(let ,(map (lambda (x) (list (fuse 'index x))) (create-indices size))
(dlambda
(:get (i) (eval (fuse 'index i)))
(:set (i value) (set (fuse 'index i) value)))))
(defun create-indices (size)
(create-indices-tail (- size 1) ()))
(defun create-indices-tail (index accumulator)
(if (< index 0)
accumulator
(recur (- index 1) (cons index accumulator))))