[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>

13 messages 2000/10/02

[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>

OK, here is what I think I know.

14 messages 2000/10/11

[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>

18 messages 2000/10/11
[#5427] RE: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — OZAWA -Crouton- Sakuro <crouton@...> 2000/10/11

At Thu, 12 Oct 2000 03:49:46 +0900,

[#5429] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...> 2000/10/11

Thanks for the input.

[#5432] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Yasushi Shoji <yashi@...> 2000/10/11

At Thu, 12 Oct 2000 04:53:41 +0900,

[#5516] Re: Some newbye question — ts <decoux@...>

>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:

80 messages 2000/10/13
[#5531] Re: Some newbye question — matz@... (Yukihiro Matsumoto) 2000/10/14

Hi,

[#5544] Re: Some newbye question — Davide Marchignoli <marchign@...> 2000/10/15

On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:

[#5576] Re: local variables (nested, in-block, parameters, etc.) — Dave Thomas <Dave@...> 2000/10/16

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#5617] Re: local variables (nested, in-block, parameters, etc.) — "Brian F. Feldman" <green@...> 2000/10/16

Dave Thomas <Dave@thomases.com> wrote:

[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>

There has been discussion on this list/group from time to time about

16 messages 2000/10/20
[#5712] Re: Dynamic languages, SWOT ? — Charles Hixson <charleshixsn@...> 2000/10/20

Hugh Sasse Staff Elec Eng wrote:

[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>

Hello fellow rubyists,

21 messages 2000/10/26

[ruby-talk:5794] Re: local variables (nested, in-block, parameters, etc.)

From: "Guy N. Hurst" <gnhurst@...>
Date: 2000-10-23 15:34:19 UTC
List: ruby-talk #5794

ts wrote:
> 
> >>>>> "G" == Guy N Hurst <gnhurst@hurstlinks.com> writes:
> 
>  The scope of a variable is determined at *compile time*
> 

I admit I am mainly focusing on programmer interface, not
compiler programming aspects...
But the compiler should be able to be made to recognize the 
scope of |x~|.

> G> x=9;
> 
>   local variable
> 
> G> [1,2,3].each{|x~| break if x==2}
> 
>   dynamic variable
>
> G> p x  #-> 9
> G> p {}::x      #-> 2
> 
>  sorry you have lost the dynamic variable.
>

I admit that to implement this scope thing would require that certain
dynamic variables be kept, at least until the next block... 

 
> G> Alternatively, I suppose the same tilde thing could be used for that, too.
> 
> G> x=9;
> G> [1,2,3].each{|x~| break if x==2}
> G> p x  #-> 9
> G> p x~ #-> 2
> 
>  in this case initialize y (rather than x~) before the each.
> 

But that is precisely what I am trying to avoid ;-)

By explicitly using a tilde, I hope to make Ruby understand how I
plan to use that variable, and do the assignment for me, if applicable.


> G> {|x,y|<a,b> a=x; ....}       # <a,b> in-block only
> 
>  Something like this :
> 
> pigeon% cat b.rb
> #!./ruby
> a = 1
> b = 2
> p "#{a} -- #{b}"
> [[3, 4]].each do <a> |b|
>       p "#{a} -- #{b}"
> end
> p "#{a} -- #{b}"
> pigeon% b.rb
> "1 -- 2"
> "3 -- 4"
> "1 -- 4"
> pigeon%
> 

Ok, but I still have to know about all local variables.
I have make sure 'a' is not already used elsewhere before I define 
it to be a=1.


> G> p {}::a                      # but still accessible outside ;-)
> 
>  You can't do this I think.
> 

Not currently, as you skillfully pointed out.
But that is a proposed capability...


> G> I don't think the tilde is so bad, considering its capability...
> 
>  You have not resolved the proposition (2), i.e. a *real* 'let' which create a
>  block (without a NODE_ITER). My proposition do() is the equivalent of 'let'
> 

Alas, I think my understanding fails here...

I think I did resolve (2), at least from an interface perspective.
(I am no compiler programmer, although it looks interesting)

The concept of using |x~| basically says to use a copy of 'x' locally.
This is so I do not have to know whether x already exists or not.
The idea of <a> is good, too, but I think the assignment should be
built-in.


>  With
> 
>   [[3, 4]].each do <a> |b|
>       p "#{a} -- #{b}"
>   end
> 
>  *and*
> 
>   do a = a + 2
>   end
> 
>  You have the proposition (1) *and* the proposition (2)
> 
>  I've still not understood the proposition (3) :-(
> 
>  proc = lambda(a, b)
>  end
> 
>  Is this a NODE_ITER or NODE_DEFN (with NODE_ARGS and NODE_SCOPE) ?
> 

And this transcends my knowledge now.

I can see you are much more advanced than I, and know the source well.

Thanks for your reply  :-)


Guy N. Hurst



-- 
HurstLinks Web Development    http://www.hurstlinks.com/
Norfolk, VA - (757)623-9688
PHP/MySQL - Ruby/Perl - HTML/Javascript

In This Thread