Posted to tcl by kbk at Tue Jul 28 20:55:49 GMT 2015view pretty
proc gensym {} { variable i return \#g[incr i] } proc makeProc {a} { set p [gensym] set v [gensym] set vfull [namespace current]::storage::$v namespace eval [namespace current]::storage [list variable $v 0] proc $p [list b [list a $a]] \ [string map [list @v $vfull] { expr {$a * [incr @v] * $b} }] return $p } set fred [makeProc 2] puts [$fred 3] puts [$fred 5] puts [$fred 5]