Posted to tcl by Stu at Sun Nov 17 15:34:32 GMT 2019view pretty

namespace eval schema {
  namespace ensemble create
  namespace export command
  namespace eval command {
    namespace ensemble create
    namespace export mod1 mod2
    proc mod1 {args} { return "mod1: $args" }
    proc mod2 {args} { return "mod2: $args" }
  }
}
proc schema: {what args} { uplevel 1 [list schema {*}[string map {/ " "} $what] {*}$args] }

% schema: command/mod1 dog goes woof
mod1: dog goes woof
% schema: command/mod2   
mod2: 
% schema: command/mod3
unknown or ambiguous subcommand "mod3": must be mod1, or mod2