Unfortunately, 4!:1 always works on the currently visible namespace, and
there is no option to explicitly make it look at a specific locale (and
ignore local names). However, we can work around this by using a monad
(whose local parameter obscures global y) and an adverb (whose local
parameter obscures globals m, u, and x). By excluding these ambiguous
names, and then combining both lists, we can get a list of global names
unpolluted by any local names.
The monadic half of nl can be replaced by the following. Unfortunately,
this won't work for the dyadic half, since it could not distinguish between
local x and global x, as x is defined locally in both the verb and the adverb.
nl_z_ =: 3 : 0
if. 0=#y do. y=.0 1 2 3 end.
if. 0={.0{.,y do.
~.((;:'y')-.~4!:1 y),(;:'m u x')-.~y 1 :'4!:1 m'
else.
cutopen_z_ y
end.
)
-- Mark D. Niemiec <[email protected]>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm