Posted to tcl by aspect at Sat May 21 06:56:44 GMT 2011view raw
- proc unknown {cmd args} {
- upvar 1 $cmd cmdvar
- if {[info exists cmdvar]} {
- uplevel 1 [list $cmdvar {*}$args]
- } else {
- apply $cmd {*}$args
- }
- }
- # now we can dispense with [proc]!
- set lambda {{args body} {list $args $body}}
- set proc {{name args body} {uplevel 1 [list set $name [list $args $body]]}}
- # scheme's (define) for Tcl
- set define {{name value} {
- if {[llength $name] > 1} {
- set args [lassign $name name]
- set value [list $args $body]
- }
- set $name $value
- }
- define {square a} {* a a}
- # an accumulator
- proc accumulator {initial} {
- lambda {addend} {
- incr initial $addend
- }
- }
- # is there room to attach bytecode to a variable that contains a lambda?
- # we still lack proper closures. [sproc] seems to have an approach for that.
- # hygienic macros are completely another story