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]