One more cheeky idea, which might be too hacky. You can actually check what was used to call a method (see [info frame]). If the dash values were passed as-literals, then handle them as options, otherwise as values. This is probably quite un-Tclish, and possibly confusing, but I believe it is possible.