Posted to tcl by pooryorick at Tue Jul 24 16:52:02 GMT 2018view pretty

namespace eval ns1 {
    namespace ensemble create -unknown [list ::apply [list args {
        puts [list gug $args]
        list ::apply [list args {
            ::tailcall {*}$args
        } [uplevel 1 {namespace current}]] [lrange $args 1 end]
    }]]

    proc p1 {} {
        return ns1p1
    }
}

namespace eval ns2 {
    proc p2 {} {
        return ns2p2
    }

    puts [ns1 p2]
}