flan/web/examples/places.flan

21 lines
717 B
Plaintext

(defstruct Enemy [hp i32 name str])
(defonce spawned i32)
(defconst room-size 4)
(defonce room [room-size i32])
;; `set` takes a fixed list of forms, not an extensible setf.
(defn main [] ()
(let [e (Enemy {.hp 10 .name "slime"})
p (addr e)]
(set spawned (+ spawned 1)) ; a local or a defonce
(set (.hp e) 7) ; a struct field
(set (.hp p) 8) ; through a (Ptr Enemy) — derefs one level
(set (at room 2) 5) ; a fixed array or slice element
(set (deref p) (Enemy {.hp 3 .name "wisp"})) ; a whole-object store
(print (.hp e)) (println "")
(println (.name e))
(print (at room 2)) (println "")
(print spawned) (println "")))