1. Question for Rob ( Name Space Idea)

Why couldn't you allow procedures be nested in functions. It doesn't seem

like it would be any more difficult than parsing nested IF THEN statements.

Then we could have locally scoped procedures within a Function.

( I don't think you could do this because of all the problems with parsing

function returns )

We could then write something like the following :
----------------------------------------------------------
function scope1(integer proc_to_use, sequence parmeters)

sequence ret_stuff

if proc_to_use = 1 then
  local_proc1(sequence parmeters)
elsif
  local_proc2(sequence parmeters)
else
  local_proc3(sequence parmeters)
end if

return ret_stuff

procedure local_proc1( sequence parameters )
  ret_stuff[1] = parameters[1]+parameters[2]
end procedure

procedure local_proc2( sequence parameters )
  ret_stuff[1] parameters[1]+parameters[2]-17
  ret_stuff[2] parameters[1]*parameters[2]
end procedure

procedure local_proc3( sequence parameters )
  ret_stuff[1] parameters[1]+parameters[2]+parameters[3]
  ret_stuff[2] parameters[1]*parameters[2]\parameters[3]
end procedure

end function -- scope1

-------------------------

Then you can call any procedure in scope1 but they are out of

scope to your main program ( scope1 would be its namespace )

I think this would be very easiy for you to implement and

It would solve a lot of problems for everyone.

Thanks Bernie

new topic     » topic index » view message » categorize

2. Re: Question for Rob ( Name Space Idea)

Bernie Wrote:

Here, I think this does the same thing and still goes
by the current rules:

---------This would be in an *.E file ---------
procedure local_proc1( sequence parameters, sequence ret_stuff)
   ret_stuff[1] = parameters[1]+parameters[2]
end procedure

procedure local_proc2( sequence parameters, sequence ret_stuff)
   ret_stuff[1] parameters[1]+parameters[2]-17
   ret_stuff[2] parameters[1]*parameters[2]
end procedure

procedure local_proc3( sequence parameters, sequence ret_stuff)
   ret_stuff[1] parameters[1]+parameters[2]+parameters[3]
   ret_stuff[2] parameters[1]*parameters[2]\parameters[3]
end procedure

function scope1(integer proc_to_use, sequence parmeters)

    sequence ret_stuff
    ret_stuff = {blah, BLAH}
    if proc_to_use = 1 then
        local_proc1(sequence parmeters, ret_stuff)
    elsif
        local_proc2(sequence parmeters, ret_stuff)
    else
        local_proc3(sequence parmeters, ret_stuff)
    end if

    return ret_stuff
end function -- scope1
----------------------END CODE----------------


I know this isn't EXACTLY the same thing but you'll notice
that the procedures are local to the *.E file and cannot
be called from any other file including your main *.ex file.

Hope this helps,
Lewis Townsend


_______________________________________________________________
Get Free Email and Do More On The Web. Visit http://www.msn.com

new topic     » goto parent     » topic index » view message » categorize

3. Re: Question for Rob ( Name Space Idea)

Thank You for your response

I don't think your solution is the same.

I would like Rob's answer to my question.

Thanks again

Bernie

new topic     » goto parent     » topic index » view message » categorize

4. Re: Question for Rob ( Name Space Idea)

Bernie Ryan writes:
[why not support nested procedures/functions to
alleviate namespace conflicts?]

I've used languages such as Pascal, Ada, PL/I etc.
that support nested routines, and I've used languages
such as C and others that don't. I've never felt that
nesting buys you very much. It just makes
the scope rules harder to understand, and sometimes
makes the code harder to read, since you may have to
do a lot of scrolling up/down in the editor to figure out
the nesting structure of a large chunk of code.

If you want to make some routines invisible to the rest
of the program, put them in a .e file as Lewis Townsend
suggests.

Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » goto parent     » topic index » view message » categorize

5. Re: Question for Rob ( Name Space Idea)

Rob you wrote:

>> I've used languages such as Pascal, Ada, PL/I etc.
>> that support nested routines,

>> and I've used languages
>> such as C and others that don't. I've never felt that
>> nesting buys you very much. It just makes

C has reasonable scoping rules.

C++ has NAMESPACES and good scoping rules.

I think that you are writing Euphoria in Watcom C++ which has
  good scoping rules so you may be losing your perspective. You
  may not realize how difficult it is to write a complicated program
  in Euphoria because you are looking at it as an interpter. Ask
  some of the game programmers what they think about Euphoria Scoping.

>> the scope rules harder to understand, and sometimes
>> makes the code harder to read, since you may have to
>> do a lot of scrolling up/down in the editor to figure out
>> the nesting structure of a large chunk of code.

Euphoria code is harder to read because you have to look in
  all of the .e files. which is a lot harder than scrolling up
  and down in a file.

>> If you want to make some routines invisible to the rest
>> of the program, put them in a .e file as Lewis Townsend
>> suggests.

NAMESPACES or Good SCOPING RULES should be supported in any modern
  langauge.

PS -- I hope you don't terminate my license because I disagree with you.

Thanks Bernie

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu