[#1207] warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...>

This message was posted to ruby-talk, but I didn't get responce from

22 messages 2003/07/01
[#1208] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/01

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1209] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/02

ts wrote:

[#1210] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/02

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1211] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1212] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1213] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1214] Re: warning in ruby extension eats memory — ts <decoux@...> 2003/07/04

>>>>> "E" == Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

[#1215] Re: warning in ruby extension eats memory — Eugene Scripnik <Eugene.Scripnik@...> 2003/07/04

ts wrote:

[#1237] FTP.new with block — Gavin Sinclair <gsinclair@...>

Hi,

22 messages 2003/07/19
[#1238] Re: [Patch] FTP.new with block — ts <decoux@...> 2003/07/19

>>>>> "G" == Gavin Sinclair <gsinclair@soyabean.com.au> writes:

[#1240] Re: [Patch] FTP.new with block — Mathieu Bouchard <matju@...> 2003/07/19

[#1297] Fix for Bug 1058 — Markus Walser <walser@...>

Hi,

16 messages 2003/07/25

Re: [Patch] FTP.new with block

From: Richard Zidlicky <rz@...68k.org>
Date: 2003-07-21 12:47:11 UTC
List: ruby-core #1261
On Sun, Jul 20, 2003 at 06:51:03PM +0900, ts wrote:
> >>>>> "R" == Richard Zidlicky <rz@linux-m68k.org> writes:
> 
> R> something more systematic is needed. So far only 2 widely used 
> R> classes appear to evaluate blocks passed to new: Proc and Tk.
> 
> svg% ruby -e 'p Array.new(2) { 12 }'
> [12, 12]
> svg% 
> 
> svg% ruby -e 'a = Hash.new { 12 }; p a[1]'
> 12

I am still on ruby 1.6.7 so I missed that:

$ ruby -e 'p Array.new(2) { 12 }'
[nil, nil]


> R> Furthermore Tk is somehwat confusing for the beginner because
> R> it uses instance_eval or something completely different to eval
> R> the block.
> 
>  Why a method must eval the block when it's called ? See Hash::new

it would be less confusing for the beginner if the syntax could be
disambiguated somehow. Clearly you won't write

  Hash.new begin 12 end
so why should
  Hash.new { 12 }
work?

> R> How to get it consistent? Leave the 2 widely used exceptions
> R> to the rule (no block arg for new) some time to phase out and
> R> use either a clear naming convention (eg new_wb instead of new)
> 
>  and change the name of *all* methods to have _wb when they use a block ?

The top priority imho is to make ruby at least force an error when 
a block expecting method doesn岐 get a block or some method ignores
a given block. Example in 1.6.7:

  TCPSocket.new(host,43{|sock|
      sock.each{|str| print str}}

it is rather irritating if the block is plainly ignored.
Another example, 

   http=Net::HTTP.Proxy($proxy_addr,$proxy_port).start(host, port)

simply returns nil as it expects to yield a block but doesn't
complain if there isn't any.


Perhaps it would be possible to use a convention to append eg "&"
to all method names that expect a block? 

The idea with "_wb" was really only a last resort workaround for me..

Richard


In This Thread