[CMcC] {et al} 2008-07-08: Tcl contains some semantic equivalences. ''~~'' can be read as ''approximates''. Add more if you find them. The idea is to find cases where ''there is more than one way to do it''. The hunt is on. In the following examples, `[lindex]` is used as the identity command, i.e., a command that returns its argument, verbatim. ** `$varname ~~ [set] varname` ** Example: Given ====== set abc 123 ====== The following command are equivalent ====== set xyz $abc set xyz [set abc] ====== ** `script ~~ [eval] {script}` ** See [Many ways to eval] ** `lindex "string" ~~ [subst] {string}` ** Example: Using `string` can result in quoting hell for some strings while using subst is more verbose but "cleaner". [[replace with example]] ** `"$list1 $list2" ... ~~ [concat] $list1 $list2 ...` ** Example: ====== #given set colors {taupe puce heliotrope} set countries {Djibouti Brazil Azerbaijan} #equivalents set var "$colors $countries" set var [concat $colors $countries] set var [list {*}$colors {*}$countries] set var [string cat $colors { } $countries] ====== ** `lindex {a b c ...} ~~ list a b c ...` ** Example: ====== set var "1 2 3" set var {1 2 3} set var 1\ 2\ 3 set var [list 1 2 3] ====== ** global varname ~~ ::varname ** '''`[upvar] #0 varname varname ~~ ::varname`''' Example: ====== set abc $::env(HOME) ====== or ====== global env upvar #0 env env2 set abc $env(HOME) set abc2 $env2(HOME) ====== <> Language | Syntax