This will sound like sacrilege for #CommonLisp but in #DylanLang I no longer use plain symbols as a poor-man's enum. Instead I do this:
define constant $rock = #"rock";
define constant $paper = #"paper";
define constant $scissors = #"scissors";
define constant <tool> = one-of($rock, $paper, $scissors);
and then type things as <tool> where appropriate. Et voilà, I can no longer misspell symbol names without getting a compiler warning. More importantly, neither can clients of my library.
EDIT: fix Dylan bugs, add last sentence.