Posted to tcl by aspect at Thu Oct 09 02:38:06 GMT 2014view pretty

tclsh-8.6.1 [tcl] % info body map

    set argNames [iota [llength $args]]
    foreach name $argNames argList $args {
        lappend cmd $name $argList
    }
    set cmdArgs [lmap a $argNames {subst {\$$a}}]
    lmap {*}$cmd {
        uplevel 1 $cmdPrefix [subst $cmdArgs]
    }

tclsh-8.6.1 [tcl] % reify script [info body map]
command {set argNames [iota [llength $args]]} command {foreach name $argNames argList $args {
        lappend cmd $name $argList
    }} command {set cmdArgs [lmap a $argNames {subst {\$$a}}]} command {lmap {*}$cmd {
        uplevel 1 $cmdPrefix [subst $cmdArgs]
    }}

tclsh-8.6.1 [tcl] % lmap {kind text} [reify script [info body map]] {reify $kind $text}
{word set word argNames word {[iota [llength $args]]}} {word foreach word name word {$argNames} word argList word {$args} word {{
        lappend cmd $name $argList
    }}} {word set word cmdArgs word {[lmap a $argNames {subst {\$$a}}]}} {word lmap expand {{*}$cmd} word {{
        uplevel 1 $cmdPrefix [subst $cmdArgs]
    }}}

tclsh-8.6.1 [tcl] % lmap {kind text} [concat {*}[lmap {kind text} [reify script [info body map]] {reify $kind $text}]] {reify $kind $text}
{literal set} {literal argNames} {cmdsub {iota [llength $args]}} {literal foreach} {literal name} {varsub argNames} {literal argList} {varsub args} {quoted {
        lappend cmd $name $argList
    }} {literal set} {literal cmdArgs} {cmdsub {lmap a $argNames {subst {\$$a}}}} {literal lmap} {token {{*}} varsub cmd} {quoted {
        uplevel 1 $cmdPrefix [subst $cmdArgs]
    }}

Comments

Posted by aspect at Thu Oct 09 02:40:23 GMT 2014 [text] [code]

tclsh-8.6.1 [tcl] % reify -r script [info body map] script {command {word {literal set} word {literal argNames} word {cmdsub {token {[} command {word {literal iota} word {cmdsub {token {[} command {word {literal llength} word {varsub {token {$} scalar {varname args}}}} token \]}}} token \]}}} command {word {literal foreach} word {literal name} word {varsub {token {$} scalar {varname argNames}}} word {literal argList} word {varsub {token {$} scalar {varname args}}} word {quoted {token \{ literal { lappend cmd $name $argList } token \}}}} command {word {literal set} word {literal cmdArgs} word {cmdsub {token {[} command {word {literal lmap} word {literal a} word {varsub {token {$} scalar {varname argNames}}} word {quoted {token \{ literal {subst {\$$a}} token \}}}} token \]}}} command {word {literal lmap} expand {token {{*}} varsub {token {$} scalar {varname cmd}}} word {quoted {token \{ literal { uplevel 1 $cmdPrefix [subst $cmdArgs] } token \}}}}}