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.
