[jbr] - 2013-07-16 This idea first appeared on c.l.t[https://groups.google.com/forum/#!msg/comp.lang.tcl/9141s8Mx6bw/F_bXYkQ90McJ] a while back. Here is a slightly different implementation that silently creates deeply nested [dict]s without complaint. proc ::tcl::dict::lappend2 {dict args} { upvar 1 $dict d if { ![dict exists $d {*}[lrange $args 0 end-1]] } { dict set d {*}[lrange $args 0 end-1] [list [lindex $args end]] } else { ::set list [dict get $d {*}[lrange $args 0 end-1]] ::lappend list [lindex $args end] dict set d {*}[lrange $args 0 end-1] $list } } namespace ensemble configure dict -map [dict merge [namespace ensemble configure dict -map] {lappend2 ::tcl::dict::lappend2}] This inspired the ensemble implementation of [string chunk]