[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>
From: Jon Babcock <jon@kanji.com>
Thanks.
From: Jon Babcock <jon@kanji.com>
Ah, thanks, I think I get it, a slightly different nuance then.
From: Jon Babcock <jon@kanji.com>
'Because all of Ruby has been...' -> 'Because Ruby has been...'?
[#5221] better way to say 'recursive join' — Yasushi Shoji <yashi@...>
in [ruby-dev:6289], Shugo Maeda suggested better name for recursive
[#5240] Ruby for Win32/DOS — Dennis Newbold <dennisn@...>
Not all of us are blessed with the opportunity to be able to develop on
[#5254] problem: undefined method `size' for File — "葡ic Santonacci" <Eric.Santonacci@...>
Hi all,
HI,
[#5264] Re: problem: undefined method `size' for Fil e — Aleksi Niemel<aleksi.niemela@...>
matz critizes good solution argumenting with features lacking from some
[#5268] Proper ConditionVariable usage? — Aleksi Niemel<aleksi.niemela@...>
Abstract
On Wed, 04 Oct 2000 07:05:22 +0900, Aleksi Niemelwrote:
In message <20001004110040.A26666@xs4all.nl>
Hi,
[#5276] Re: Ruby Book Eng tl, ch1 question — schneik@...
[#5310] Errata for Ruby Book? — Jon Babcock <jon@...>
[#5318] Redefining super method as singleton? — Robert Feldt <feldt@...>
On Fri, 6 Oct 2000, Yukihiro Matsumoto wrote:
[#5329] Ruby vs PHP ? — "Valerio Bamberga" <bamberga@...>
Hi!
[#5331] Unit testing network code? — Hugh Sasse Staff Elec Eng <hgs@...>
Can someone give me pointers on how to Unit Test code that is run on
> I think maybe one would test each end on its own first, faking the
[#5335] string streams in Ruby? — Hugh Sasse Staff Elec Eng <hgs@...>
Is there any way, without going through "modifying the internals",
[#5346] Is Ruby "enough better"? — Gabriel Lima <Gabriel.Lima@...>
Hi.
[#5364] Allowing *ary's in the middle of a camma separated list — "Akinori MUSHA" <knu@...>
Hi,
Hi,
At Tue, 10 Oct 2000 14:17:24 +0900,
[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>
OK, here is what I think I know.
At Wed, 11 Oct 2000 11:37:25 +0900,
Hi,
Hi,
Hi,
Hi,
[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>
At Thu, 12 Oct 2000 03:49:46 +0900,
Thanks for the input.
At Thu, 12 Oct 2000 04:53:41 +0900,
At Thu, 12 Oct 2000 07:25:03 +0900,
oops, I didn't read this one before I went out for food..
At Thu, 12 Oct 2000 09:59:19 +0900,
[#5437] Editor recommandations? — "Chris Morris" <chrismo@...>
Any recommendations on editors for Ruby script on Windows?
[#5471] 2 ideas from Haskell — Mark Slagell <ms@...>
Do either of these interest anyone:
[#5479] Some newbye question — Davide Marchignoli <marchign@...>
I am reading the documentation I found about ruby but several points
[#5480] InstallShield version for Ruby soon... — andy@... (Andrew Hunt)
Okay folks,
[#5489] Regexp#matches — Aleksi Niemel<aleksi.niemela@...>
Would someone object aliasing matches for match in Regexp?
[#5505] Sorry, What is Ruby Book — Mansuriatus Shahrir Amir <chioque@...>
Sorry if this information is somewhere obvious. I just stumbled upon
[#5516] Re: Some newbye question — ts <decoux@...>
>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:
Hi,
On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:
matz@zetabits.com (Yukihiro Matsumoto) writes:
Dave Thomas <Dave@thomases.com> wrote:
Hi,
> Proposal a and b have incompatibility. I'm not sure it's worth it.
>>>>> "Y" == Yukihiro Matsumoto <matz@zetabits.com> writes:
On Mon, 16 Oct 2000, ts wrote:
>>>>> "Y" == Yukihiro Matsumoto <matz@zetabits.com> writes:
[#5558] GC: malloc_memories — Mathieu Bouchard <matju@...>
Hi,
> |precipitate a new GC cycle if lots of resizing is done. My biggest
[#5570] Notes about GC — Mathieu Bouchard <matju@...>
[#5600] passing single or multiple strings. — Hugh Sasse Staff Elec Eng <hgs@...>
With multple assignments I can get nested arrays "shelled" (like peas)
In message "[ruby-talk:5600] passing single or multiple strings."
[#5603] debug command list in English — "Morris, Chris" <ChrisM@...>
I found this page which lists the interactive debugger commands ... anyone
[#5619] lint? — "Swit" <swit@...>
Is there something like lint for Ruby? I'd like to find NameErrors before
[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>
There has been discussion on this list/group from time to time about
Hugh Sasse Staff Elec Eng wrote:
On Sat, 21 Oct 2000, Charles Hixson wrote:
[#5715] Help: sockets broken — jason petrone <jp@...>
I just compiled ruby 1.6.1 on an openbsd 2.6 machine(x86).
[#5716] Re: Array#insert — Aleksi Niemel<aleksi.niemela@...>
> From: jweirich@one.net [mailto:jweirich@one.net]
[#5727] String#slice surprise — "Guy N. Hurst" <gnhurst@...>
Hi,
Dave Thomas wrote:
[#5787] Shells and Ruby — "Dat Nguyen" <thucdat@...>
Hello all,
[#5850] Re: Array#insert rehashed — Aleksi Niemel<aleksi.niemela@...>
Dave asks for:
[#5862] succ but no pred? (& the MURKY award) — "Hal E. Fulton" <hal9000@...>
First of all, a serious question:
[#5873] Integer(String) weirdness for a ruby newbie — Stoned Elipot <Stoned.Elipot@...>
Hi,
[#5881] Q:what about "Programming Ruby"? — Gabriel Lima <Gabriel.Lima@...>
Hi to you all.
[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>
Hello fellow rubyists,
On Fri, 27 Oct 2000, hipster wrote:
[#5947] Hash.new {block} / Hash#default_proc{,_set} — "Brian F. Feldman" <green@...>
I've done very little testing, but I think I've successfully implemented the
[ruby-talk:5500] Re: Some newbye question
In article <Pine.LNX.4.21.0010122317290.1303-100000@mercurio.localdomain>,
Davide Marchignoli wrote:
(...)
>In FAQ 2.2 the following code is used as example for:
>
>a = 0
>for i in 1..3 do
> a += i
> b = i*i
>end
>print a, b
(...)
>Even if both a and b remain accessible after the block.
Do you mean, why b remains accessible? You are stumbled about the
fact that the 'do' above is not introducing a new block but is
syntactical (optional) part of the 'for' construct:
'for' ... ['do'] ... 'end'
As in your example you are not dealing with blocks at all, no block
variable exists ;-)
If you would do this instead:
def myfor(range,&block)
range.each &block
end
a = 0
myfor 1..3 do |i|
a += i
b = i*i
end
print a, b
You will find REAL blocks to be involved. Therefore 'b' is not
accessible after leaving the block.
>So when does a block create a new scope?
Every time a new local variable is created (means first-time
assigned) a new scope was introduced, and the new variable will
vanish if the block is left.
>Which is the rationale of the fact that block variables are non-binding
>if some variable with the same name already exists ? Isn't it confusing?
Yes and no (or jein!, as we germans would say ;-) Try to see it like
this: THERE ARE NO BLOCKS IN RUBY! :-)
A block is only a syntactic element to describe Ruby's structure.
If we are speaking about blocks, we really are speaking about
code + execution contexts (aka closures). These closures may be
objectified (via lambda, proc or Proc.new) or not.
If you buy this, you will agree that it makes sense that code in a
context is able to access the variables valid in that context, isn't
it? As a nice add-on, matz has chosen to make variables, new created
in that context, local to it. This is a very nice feature, as code
should not depend on a variable created by a certain context!
Why? Well, it may be that the context is never executed hence the
variable does not exist in the end. What will the surrounding
context be supposed to do then?
>What is supposed to do the following fragment of code?
>
>a = 1 ; x = 1 ; f = proc {|a| a += 1}
>f.call(x)
'a' will not be created in the closure (did you recognize, I didn't
call it block? ;-) but used from the surrounding context. Due to the
'|a|' construct, the argument passed to the closure will be bound to
'a' modifiying the variable of the surrounding context therefore.
Note: '|'...'|' does not CREATE variables, but only MARK them to be
used as parameters. During binding, if some variable didn't
exist, they will be created, of course, hence are local to the
closure!
>Why the two following (admittedly contrived) computations give different
>results ?
>
>a = 1 ; x = 1 ; f = proc {|a| a += 1}
>f.call(x)
>f.call(a)
>a # results in 2
>
>a = 1 ; x = 1 ; f = proc {|a| a += 1}
>f.call(a)
>f.call(x)
>a # results in 3
Oops ... I would guess the results should be vice versa ... Let me
look ... yes! It seems you have exchanged the results. The top one
should result in '3' and the bottom one in '2'.
But coming to your question. If you take may words from above it will
very clear to you :-)
First example:
- x (=1) is passed to the closure. 'a' is marked to be used as
argument. Hence it is bind to the value of 'x' => 1
- Now a += 1 is executed => 'a' is now 2.
- a (=2) is passed to the closure. 'a' will be bound to 2.
- Now a += 1 is executed => 'a' is now 3.
Second example:
- a (=1) is passed to the closure. 'a' is marked to be used as
argument. Hence it is bind to the value of 'a' => 1
- Now a += 1 is executed => 'a' is now 2.
- x (=1) is passed to the closure. 'a' will be bound to 1.
- Now a += 1 is executed => 'a' is now 2.
All clarities removed? :-)
>Are the following statement equivalent?
>
>p() if (b1 and b2)
>p() if (b1 && b2)
No! They have different precedence, AFAIK. But they are supposed to
do the same, yes.
(...)
>Sorry for the length of this mail and thanks in advance for any possible
>answer.
I hope my explanations could help you a bit.
> Davide Marchignoli
\cle
--
Clemens Hintze mailto: c.hintze@gmx.net