# lexically bind environment variables to a block.
# create a new function _name_ with each argument _var_
# bound to its current value.
fn vbindfn {
_args:=$*
and {~ $#_args 0 1} {echo 'usage: vbindfn name block [var ...]' >[1=2]; raise usage}
_let := ''
for _ in ${tl ${tl $_args}} {
echo doing $_
_let=$_let^${quote $_}^':='^${quote $$_}^';'
}
fn ${hd $_args} ${parse '{'^$_let^${hd ${tl $_args}}^' $*}'}
}
|