On 11/9/10 4:52 PM, Eric Blake wrote: > On the Austin Group mailing list, David Korn (of ksh93 fame) > complained[1] that bash's 'local' uses dynamic scoping, but that ksh's > 'typeset' uses static scoping, and argued that static scoping is saner > since it matches the behavior of declarative languages like C and Java > (dynamic scoping mainly matters in functional languages like lisp): > > [1] > https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-group-l&id=14951 > > I'm trying to standardize the notion of local variables for the next > revision of POSIX, but before I can do so, I need some feedback on two > general aspects: > > 1. Implementation aspect: > How hard would it be to add static scoping to bash? > Is it something that can be added in addition to dynamic scoping, via > the use of an option to select the non-default mode (for example, 'local > -d' to force dynamic, 'local -s' to force static, and 'local' to go with > default scoping)?
The scoping is at the function level, not the variable level, so this would not be possible without more work than I'd be willing to do. > If both scoping forms are supported, is it worth making the default > scoping dependent on posix compliance (for example, 'local' means > dynamic scoping for 'set +o posix' but static scoping for 'set -o > posix'), or should it be the same default for both modes? I really don't want to have "posix" and "non-posix" functions with different behaviors. The fact that ksh93 has those is an awful feature. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/