[#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:5793] Re: local variables (nested, in-block, parameters, etc.)

From: matz@... (Yukihiro Matsumoto)
Date: 2000-10-23 15:32:12 UTC
List: ruby-talk #5793
Hi,

In message "[ruby-talk:5789] Re: local variables (nested, in-block, parameters, etc.)"
    on 00/10/23, "Guy N. Hurst" <gnhurst@hurstlinks.com> writes:

|I think they are:
|
|If a local var exists before a lambda, 
|- it should be available to the lambda
|- it should be bindable to a parameter
|
|If you are making a lambda
|a - you should have the option to bind parameter to a local var
|    + makes in-block var same as local var; no name conflicts
|b - you should have access to local vars you know about
|c - if you don't bind a parameter to a local var, you shouldn't
|have to worry about conflicts of that in-block var with the local var
|    + [name conflict] either disallow using the local var you chose to not bind to
|    + or, use special accessor syntax to differentiate the two
|d - you should be able to make in-block vars that are limited to inside the block
|    + to make it limited to the block, it can't be bound to a local var
|    + you shouldn't have to worry about conflicts with local vars you use inside the block
|e - you should be able to make vars inside the block that are accessible outside it
|    + to make it accessible outside the block, it should have to be a local var
|    + you shouldn't have to worry about conflicts with other local vars
|f - you shouldn't have to know about all local vars to avoid conflicts

Thank you for the problem analysis.

My current idea is to introduce new block parameter syntax <>, which
makes all variables inside block local.  In addition, optional block
local variable declaration might be added, like:

  l = lambda{<a, b; c, d> ...}

Plus, if compatibility problem would not be so critical, || block
parameters might NOT be in-block vars even if they are NOT seen before
the block.  Note I've not decided anything yet. We still need discussions.

Good things about this are:

  * We would be freed from local name conflict problem finally.

  * single block parameter (e.g. |a|) is something in between |a,| and
    |*a|.  But <a> behavior would be clear.

Bad things about this are:

  * it introduces explicit declaration, which Ruby has avoided for
    long time.

  * incompatibility.  Especially, || behavior change might be too big
    damage for existing programs.

							matz.

In This Thread