Destructuring assignment is a mechanism for extracting data from data structures.
dbohdan 2015-10-25: Here is a simple implementation of destructuring assignment for nested dictionaries.
# Destructuring assignment for dictionaries.
# Version 0.0.1
proc dassign {to from {level 1}} {
foreach {key value} $to {
# $value is a variable name.
if {[string match $* $value]} {
uplevel $level [list \
set [string range $value 1 end] [dict get $from $key]]
} else {
dassign $value [dict get $from $key] [expr {$level + 1}]
}
}
}% dassign {foo {bar $five baz $seven}} {foo {bar 5 baz 7}}
% puts $five\ $seven
5 7