Setf

is a module that emulates a simple version of setf that allows you to register your own places using register-place.

register-place

dynamic

Dynamic

                        (register-place name builder)
                    

registers a place of name name using the expression builder builder.

Example:

(register-place 'nth (fn [args] `(Array.aset! %@args)))

register-simple-place

dynamic

Dynamic

                        (register-simple-place name setter)
                    

registers a place of name name that uses the setter setter.

Example:

(register-simple-place 'nth 'Array.aset!)

register-struct-places

dynamic

Dynamic

                        (register-struct-places t)
                    

registers all members of a struct-like type as places.

Example:

(register-struct-places 'Vector2)

(let-do [x (Vector2.init 1 2)]
  (setf (Vector2.x &x) 10)
  x) ; => (Vector2 10  2)

setf

macro

Macro

                        (setf place val)
                    

sets the value under the place place to the value val.

Example:

(def x 1)
(setf x 10)
x ; => 10

(def x [1 2 3])
(setf (nth &x 1) 10)
x ; => [1 10 3]