I tried erasing 'list_base_' and list disappeared from z. Also, why bother with a pretty much useless return? On Sep 17, 2014 12:55 PM, "Raul Miller" <[email protected]> wrote:
> That's easy to avoid the problem with erasing names in the path. > > Option 1: assign the name using =. before erasing it. > > Option 2: use a form of the name which specifies the locale. > > Put differently, how is it useful for erase to tell you you have made > a mistake when what you really want is to not make the mistake in the > first place? > > Thanks, > > -- > Raul > > On Wed, Sep 17, 2014 at 2:13 PM, Don Guinn <[email protected]> wrote: > > It has always bothered me that erase will erase names in the path if the > > name does not exist in the current locale. It kind of makes sense to do > > that, but erasing names from other locales, particularly the z locale > does > > not seem right either. I created my own erase to only erase from the > > current locale but it is not pretty and seems inefficient if used a lot. > > Perhaps adding a dyadic option to 4!:55, values 0 and 1. Zero being the > > current way to erase from the path and the default, and 1 restricting > erase > > to the current locale. > > > > The problem with avoiding local names is easily avoidable by creating > > another erase verb which is explicit instead of tacit. But if erase is > made > > dyadic then maybe 2 could mean only erase local names or 3 for only > global > > names. > > > > Then there is the problem of erasing a pendent name. This results in a > > stack error. Why not make erase return 1 if successful and 0 if not as > > Linda expected instead of if the name is legal or not? That makes the > > return more useful. > > > > On Wed, Sep 17, 2014 at 11:42 AM, Raul Miller <[email protected]> > wrote: > > > >> The result from erase is telling you that the name is legal to erase. > >> To get a zero, try erase 'i.' > >> > >> If you want to see whether the operation succeeded, you'll need to do > more > >> work. > >> > >> One issue you need to consider is the class of the name. > >> > >> nameClass=: [: nameclass ;: ::] > >> > >> Only names with a non-negative class can be removed by erase. > >> > >> Another issue which might interest you is whether the name is defined > >> locally. This needs work (it gives undefined names a definition), but > >> is a hint as to how you could test for whether the name is defined > >> locally: > >> > >> nameLocal=: [: {.@".@('0[',],'=:',]) ::1:&> ;: ::] > >> > >> Another issue which might interest you is what locales the name is > defined > >> in. > >> > >> nameLocales=:[: 3 :0 S:0 ;: ::] > >> path=. ~.(,18!:2)18!:5'' > >> test=.'(p P y)](4!:0<''',y,'__y'')[(''''P y)[p=.(P=.18!:2)y' > >> <path#~_1<(3 :test)"0 path > >> ) > >> > >> Example use: > >> nameClass 'this is a test' > >> nameLocal 'this is a test' > >> nameLocales 'this is a test' > >> > >> nameClass gives you a list of numbers in the range _2 through 3 > >> indicating whether the name is illegal, undefined, noun, adverb, > >> conjunction or verb. > >> > >> nameLocal gives you a 1 for names with local definitions (and for > >> illegal names). Be careful, though, because it will define the name if > >> it's not already defined. > >> > >> nameLocale gives you a boxed list of the locales where you can find > >> the definition of the name. > >> > >> Anyways... there's lots of ways things could work. But why would you > >> erase a name in the first place, if you don't know that it exists? > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> > >> > >> On Wed, Sep 17, 2014 at 10:40 AM, Linda Alvord <[email protected] > > > >> wrote: > >> > For a long time this has puzzled me. > >> > > >> > > >> > > >> > A=:2 4$i.8 > >> > > >> > erase 'A' > >> > > >> > 1 > >> > > >> > erase 'A' > >> > > >> > 1 > >> > > >> > > >> > > >> > It seems the second time it tells me it erased A it is lying because > >> there > >> > should be no A any longer. > >> > > >> > > >> > > >> > Now it is really bothering me. > >> > > >> > load 'viewmat' > >> > > >> > ]GRB=:1 0 2{"1 (#:i.8){0 255 > >> > > >> > ]T=:+/~i.16 > >> > > >> > GRB viewmat T;'T'GRB viewmat i.16 > >> > > >> > > >> > > >> > ]C=:i.12 > >> > > >> > GRB viewmat C > >> > > >> > > >> > > >> > ]D=:3 4$i.12 > >> > > >> > GRB viewmat D > >> > > >> > > >> > > >> > ]M=:5 3$i.15 > >> > > >> > GRB viewmat M > >> > > >> > > >> > > >> > GRB viewmat 7 3$i.21 > >> > > >> > > >> > > >> > ]B=:4 4$i.16 > >> > > >> > GRB viewmat B > >> > > >> > > >> > > >> > GRB viewmat |: B > >> > > >> > > >> > > >> > GRB viewmat |.|:B > >> > > >> > > >> > > >> > If I run a different script with images in 1.ijs and then run > >> 2.ijs I > >> > get images all mixed up. Even If I remove all png's from the temp > >> folder, > >> > ghosts of previous images appear. I turn of JHS.bat and the try > 2.ijs > >> > and old images show up. They seem to be coming from the clipboard > >> possibly. > >> > Erasing names does not seem to help, but I'd like it better if I only > >> got a > >> > 1 when it finds something with the given name and then was not > willing > >> to > >> > erase it abain. > >> > > >> > > >> > > >> > However, it is great to see any images! Also, jqt seems to be > >> unphased > >> > by thses ghosts. > >> > > >> > > >> > > >> > Linda > >> > > >> > > >> > > >> > ---------------------------------------------------------------------- > >> > For information about J forums see > http://www.jsoftware.com/forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > >> > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
