1. RE: namespace coflicts: local vs private symbols
- Posted by Al Getz <Xaxo at aol.com> Feb 09, 2003
- 420 views
Hello Matt, If you check out your code carefully, i dont think you will find this to be a namespace error? You havent applied a value to x in the PRIVATE procedure, so the P() function fails, not the last "?x". I thought something was strange here because im pretty sure i used that idea several times in programs. I'll check it again after setting x equal to some value first in the procedure. Take care, Al
2. RE: namespace coflicts: local vs private symbols
- Posted by Al Getz <Xaxo at aol.com> Feb 09, 2003
- 407 views
Al Getz wrote: > Hello Matt, > > If you check out your code carefully, i dont think you will > find this to be a namespace error? > You havent applied a value to x in the PRIVATE procedure, > so the P() function fails, not the last "?x". > > I thought something was strange here because im pretty sure > i used that idea several times in programs. > > I'll check it again after setting x equal to some value first > in the procedure. > > Take care, > Al > > Sorry, this last post was in reply to "Lewis Townsends' " post, not one of Matt's. BTW, the following two lines of code never works in Euphoria: sequence x x=x+1 but only because x wasnt assigned a value yet. Take care, Al
3. RE: namespace coflicts: local vs private symbols
- Posted by Lewis Townsend <Keroltarr at hotmail.com> Feb 09, 2003
- 410 views
Hello Al, > If you check out your code carefully, i dont think you will > find this to be a namespace error? I know its not a namespace error. Eu only looks for variables until it finds one. Then if that variable dont have a value then it returns an error rather than continuing to look for another variable of the same name (but of different scope). The issue is NOT that the given code SHOULD work, it is that there is no way to access the local variable within the scope of the private variable... not even as the first assignment of the private one. The private variable completely blocks the local variable. I just think that there should be SOME way to access that local var. Not that the code I gave should pass without error. Perhaps the following example would be a suitable alternative: sequence x x = {0,0,0,0} procedure p () sequence x x = local:x + 1 ? x end procedure ? x p () ? x later Lewis Townsend
4. RE: namespace coflicts: local vs private symbols
- Posted by Al Getz <Xaxo at aol.com> Feb 09, 2003
- 415 views
Hi again Lewis, Lewis Townsend wrote: > Hello Al, > > sequence x > x = {0,0,0,0} > procedure p () > sequence x > x = local:x + 1 > ? x > end procedure > ? x > p () > ? x > > later > Lewis Townsend > > Ahhh! That clarifies the question a bit But, as long as you dont mind renaming the local "x" to "Local:x" (which doesnt seem like a bad idea really) then you also wont mind the following solution: sequence x x = {0,0,0,0} function Get_x() return x end function procedure p () sequence x x = Get_x() + 1 ? x end procedure ? x p () ? x Good luck with it, Al
5. RE: namespace coflicts: local vs private symbols
- Posted by Al Getz <Xaxo at aol.com> Feb 09, 2003
- 405 views
Derek Parnell wrote: > > I kinda do this renaming as a naming convention of mine. > ... Variables scoped to a routine begin with 'l' (local) > ... Variables scoped to the file begin with 'v' (variable) > ... Varaibles scoped to global begin with 'g' (global) > > I've been using this convention for about 15 years with some success. > Thus I'd code... > > sequence vx > vx = {0,0,0,0} > > function Get_x() > return vx > end function > > procedure p () > sequence lx > lx = Get_x() + 1 > ? lx > end procedure > ? vx > p () > ? vx > > That's a pretty good idea. I started doing some of the global vars Global_VarName myself, and although it takes a bit longer to type "Global" with the "_" too it sure does clarify a program when you go to read it over again a year or two later so i know what you are talking about there. My biggest problems with variable naming conventions comes in with some seemingly simple tasks: sequence FileName or Filename, or even filename ? I always want to type Filename, when FileName is probably most appropriate. I tryed once to reserve the first letter as upper case to indicate a sequence (and lower case to indicate an atom or integer) but it's just too hard to do that when other naming priorities come up. I usually reserve the underscore "_" for more important things especially things like buttons, windows, edit controls, etc. : atom Button_LoadFile, Window_MainWin, Edit_Amount, Edit_Balance, etc. Although it does take longer to type the full name like "Button_" it always tells me immediately what kind of thing im accessing. I've stuck with this even when im in a hurry because it's just too handy when you go to read the code over several years later. I do like the (rather) new naming convention for include files, such as include myclass.ew as ClassOne This is going to be MOST beneficial to most of the programming i do in the future with Euphoria, especially with 'plug in' type files. The only thing i have to get used to is that the 'as' name isnt visible to any other file, it's only visible to the file it's declared in. I guess this is a good thing though, because it allows one to restrict the visibility much better, rather then be stuck with having the names automatically visible throughout the whole program. It's only a little inconvenience to have to include them in all the other files in case you do want to use them there also. Would be interesting to have a 'global include x as y' i guess. When you want to give a second party access to your 'class' this would make it much easier for them. Take care, Al
6. RE: namespace coflicts: local vs private symbols
- Posted by rforno at tutopia.com Feb 09, 2003
- 430 views
I don't think this proposal is wise enough. First, I know of no other language supporting it (maybe some of you do). Second, I think a routine should not be dependent on things external to it. Third, it seems difficult to implement, because after sequence x is declared, to know if x has a previous value will entail going backwards in the symbol chain, also with negative effects in performance. Fourth, if you add an option to specify "local" or "external" variables, then the routine will depend on the environment in which it is executed, and consequently will be difficult to transport to other programs. Regards. ----- Original Message ----- From: Lewis Townsend <Keroltarr at hotmail.com> Subject: namespace conflicts: local vs private symbols > > Hello Robert, all, > > I may be addressing an old issue here but just a thought for future releases > of Eu: With the (relatively) new namespacing abilities of Euphoria you can > differentiate (sp?) between conflicting global identifiers by using > prefixes. I wish there were a similar way to identify local symbols in > routine that has a private symbol of the same name. Here is an example > program that doesn't work without renaming something. > > sequence x > x = {0,0,0,0} > procedure p () > sequence x > x = x + 1 > ? x > end procedure > ? x > p () > ? x > > I would like to see: > {0,0,0,0} > {1,1,1,1} > {0,0,0,0} > > I get this error: > variable x has not been assigned a value > > I would prefer it check the local symbol for a value before returning an > error. An alternate handling of this situation could require a prefix such > as "local:" or something like that. > > Just some thoughts here folks, any comments? > > > > TOPICA - Start your own email discussion group. FREE! >
7. RE: namespace coflicts: local vs private symbols
- Posted by rforno at tutopia.com Feb 10, 2003
- 408 views
Nice solution, Al! ----- Original Message ----- From: Al Getz <Xaxo at aol.com> Subject: RE: namespace coflicts: local vs private symbols > > Hi again Lewis, > > > Lewis Townsend wrote: > > Hello Al, > > > > sequence x > > x = {0,0,0,0} > > procedure p () > > sequence x > > x = local:x + 1 > > ? x > > end procedure > > ? x > > p () > > ? x > > > > later > > Lewis Townsend > > > > > Ahhh! That clarifies the question a bit > > But, as long as you dont mind renaming the local "x" to > "Local:x" (which doesnt seem like a bad idea really) > then you also wont mind the following solution: > > > sequence x > x = {0,0,0,0} > > function Get_x() > return x > end function > > procedure p () > sequence x > x = Get_x() + 1 > ? x > end procedure > ? x > p () > ? x > > > Good luck with it, > Al > > > > TOPICA - Start your own email discussion group. FREE! >