RosettaCodeData/Task/Reflection-Get-source/Tcl/reflection-get-source-1.tcl

16 lines
430 B
Tcl

proc getproc {name} {
set name [uplevel 1 [list namespace which -command $name]]
set args [info args $name]
set args [lmap arg $args { ;# handle default arguments, if it has them!
if {[info default $name $arg default]} {
list $name $default
} else {
return -level 0 $arg
}
}]
set body [info body $name]
list proc $name $args $body
}
puts [getproc getproc]