[#5322] O(1) performance for insertions/deletions at the front of an Array/String — Eric Mahurin <eric_mahurin@...>

I just did some benchmarks on push, pop, shift, and unshift

24 messages 2005/07/01
[#5338] Re: O(1) performance for insertions/deletions at the front of an Array/String — Mathieu Bouchard <matju@...> 2005/07/02

On Fri, 1 Jul 2005, Eric Mahurin wrote:

[#5348] Re: O(1) performance for insertions/deletions at the front of an Array/String — Eric Mahurin <eric_mahurin@...> 2005/07/02

--- Mathieu Bouchard <matju@artengine.ca> wrote:

[#5357] Re: O(1) performance for insertions/deletions at the front of an Array/String — Mathieu Bouchard <matju@...> 2005/07/03

On Sat, 2 Jul 2005, Eric Mahurin wrote:

[#5359] Re: O(1) performance for insertions/deletions at the front of an Array/String — Eric Mahurin <eric_mahurin@...> 2005/07/03

--- Mathieu Bouchard <matju@artengine.ca> wrote:

[#5361] Re: O(1) performance for insertions/deletions at the front of an Array/String — Mathieu Bouchard <matju@...> 2005/07/03

On Sun, 3 Jul 2005, Eric Mahurin wrote:

[#5362] Re: O(1) performance for insertions/deletions at the front of an Array/String — Eric Mahurin <eric_mahurin@...> 2005/07/03

--- Mathieu Bouchard <matju@artengine.ca> wrote:

[#5365] Re: O(1) performance for insertions/deletions at the front of an Array/String — Yukihiro Matsumoto <matz@...> 2005/07/04

Hi,

[#5367] Re: O(1) performance for insertions/deletions at the front of an Array/String — Eric Mahurin <eric_mahurin@...> 2005/07/04

--- Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#5368] Re: O(1) performance for insertions/deletions at the front of an Array/String — Yukihiro Matsumoto <matz@...> 2005/07/04

Hi,

[#5372] Re: O(1) performance for insertions/deletions at the front of an Array/String — Florian Gro<florgro@...> 2005/07/04

Yukihiro Matsumoto wrote:

[#5420] Sydney Developer Preview 1 released — Evan Webb <evanwebb@...>

Sydney, an experimental ruby interpreter, has been released!

15 messages 2005/07/11
[#5424] Re: [ANN] Sydney Developer Preview 1 released — Evan Webb <evanwebb@...> 2005/07/12

Thanks everyone for the feedback so far!

Re: Object#=~

From: Eric Hodel <drbrain@...7.net>
Date: 2005-07-06 17:36:02 UTC
List: ruby-core #5406
On 06 Jul 2005, at 10:06, Eric Mahurin wrote:

> --- Eric Hodel <drbrain@segment7.net> wrote:
>
>> On 06 Jul 2005, at 09:30, Eric Mahurin wrote:
>>
>>>> <dooby@d10.karoo.co.uk> writes:
>>>>
>>>>> I expected you to say that this was intentionally provided as a  
>>>>> "third state":
>>>>>
>>>>> true  - positive pattern match result
>>>>> nil   - negative pattern match result
>>>>> false - don't know (no match was done)
>>>
>>> Should nil be don't know and false be mismatch?  That would be
>>> consistent with <=> which returns nil if the items aren't
>>> comparable.  Maybe the same should be done with == and ===
>>> return nil instead of false when the 2 objects can't be
>>> compared.
>>
>> $ ruby -e 'p "f" =~ /x/'
>> nil
>
> "f" vs. /x/ are comparable so I was thinking false might be
> more  suitable than nil.

This would not be a backwards compatible change.  daz's suggestion  
simply defines a convention for existing behavior, which feels much  
better to me.

> And use nil when it is the wrong type
> of object or doesn't respond to the right methods.  I'm
> suggesting that comparison operator methods look something like
> this:
>
> def ===(obj) # or <=>, ==, =~
>     return(nil) if obj isn't comparable to self
>     ... compare returning false instead of nil ...
> end

Where in Ruby are two objects not comparable via #=== or #==?

#<=> is used by Comparable, and nil makes sense there because it gets  
called on the inside.  I've rarely called #<=> by itself.

#=~ only needs to return false values when there's no match, and true  
values when there is a match.  I don't see what making it match up  
with the other three gains anyone.

-- 
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E  7C11 332A 551C 796C 9F04


In This Thread