Inspired by this Racket discourse post I tried writing a macro that defines bindings that work like constants in Racket.
Note that the solution here handles using set!
; you can't prevent shadowing or redefining these variables -- see the Discourse thread.