code snippet to showcase some weird behaviour with let added by Reid 14 hours ago
;; Change the cursor's mode (letrec ((changed-mode? #t)) (cond ((pressed? 'brush-mode) (set! (cursor-mode self) (enum-name->enum cursor-modes 'brush))) ((pressed? 'select-mode) (set! (cursor-mode self) (enum-name->enum cursor-modes 'select))) ((pressed? 'cycle-mode) (set! (cursor-mode self) (enum-name->enum cursor-modes 'cycle))) ((pressed? 'next-mode) (set! (cursor-mode self) (or (enum-next (cursor-mode self)) (enum-min cursor-modes)))) ((pressed? 'prev-mode) (set! (cursor-mode self) (or (enum-prev (cursor-mode self)) (enum-max cursor-modes)))) (else (set! changed-mode? #f))) ;; init code for modes that require it (when changed-mode? (case (enum-name (cursor-mode self)) ((select) (set! (cursor-ax self) (cursor-x self)) (set! (cursor-ay self) (cursor-y self))))))