Posted to tcl by kbk at Tue Jul 28 20:55:49 GMT 2015view raw
- 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]