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]