[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

Re: Symbol#empty? ?

From: Dave Thomas <dave@...>
Date: 2008-01-28 16:42:10 UTC
List: ruby-core #15276
On Jan 28, 2008, at 10:09 AM, Gary Wright wrote:

>>> String#to_sym is a guaranteed 'perfect' hash though, not a regular  
>>> hash with possible clashes.  If Symbol/String aren't going to  
>>> provide that functionality then someone is going to immediately  
>>> write a gem/extension that does.
>> Here a I was meaning a Hash object, not to_hash.
>
> You were talking about 'the works of Shakespere' as a symbol, which  
> I assumed meant the mapping of an arbitrary string to a smaller  
> value for fast comparisons.  That isn't a Ruby Hash object it is a  
> mathematical hash function.  So I guess I just don't understand what  
> you meant by that example.

Gary:

Let's assume that I know what a Ruby Hash is... :)

If you really want to map arbitrary strings to some other value, then  
you can use a Hash to manage that

class StringToInt
   def initialize
     @contents = {}
   end
   def lookup(val)
     result = @contents[val]
     unless result
       result = @count += 1
       @counts[val.dup] = @count
     end
     result
   end
end

So, my point is that for the rare times you're looking for a string-to- 
identity function, you can write one trivially. There's no need to  
burden the language with it. However...

>> I just don't see the need to burden the language with a complex  
>> feature with dubious semantics to implement a little used feature  
>> that can be implemented trivially using existing constructs. So, I  
>> agree with you--a gem is where this belongs.
>
> How can a 'complex feature' also be implemented 'trivially'?

Implementing something that adds complexity is easy... It's normally  
harder to implement something that's elegant.

Look at it another way. If you implement it at the application level,  
then it's just some application thing, and it doesn't have an impact  
on the language semantics. It isn't tied to the abstraction of "a  
symbol."

However, it you declare that Symbols are not really symbols in the  
symbol table sense, but instead are now some kind of half-string, then  
you are introducing lots of complications, because now you're changing  
the semantics of the language, and introducing new stuff that  
interacts with other areas of the language. These interactions are  
hard to predict.

One of the joys of Ruby is discovering unanticipated interactions.  
Symbol.to_proc is a good example. However, in this case, I don't think  
that we're looking at anything magical coming down the pike. I just  
think we're adding to the surface area of the language without  
significantly enhancing the functionality.

> How can you provide the string literal notational convenience with a  
> gem?

Why do you need it for anything apart from :symbol, which the language  
already supports. If you do need it, it's a method call. Most gems  
implement their functionality with method calls--no one complains that  
Builder doesn't integrate with less than and greater than to support  
<name>Dave</name>.

> How can you avoid the per object overhead of a full instance of  
> Object?

Symbols are objects too. When you write :"war and peace" you're  
creating a Ruby object (the symbol) and you're storing the string "war  
and peace".  (And, talking of overhead, in 1.8 symbol contents could  
not be garbage collected, whereas string contents could.  
File.read("big_file").intern will permanently use up the memory that  
holds the file's contents. The same seems to be true of 1.9, but I may  
be mistaken.)



> Do you really think that String#to_sym is 'little used'?

For arbitrary strings, I do. For things that are true symbols,  
obviously not.



I see exactly what you're saying, and understand why. But I just don't  
see how :"some arbitrary string" or File.read(...).intern will ever be  
used enough to justify the additional complexity in the language.





Dave


In This Thread