# 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}}^' $*}'} }