[#4734] Possible regex bug? — hal9000@...
OK, I'm trying to match an optional comma followed by
[#4744] Piping in Ruby? — Stephen White <steve@...>
There's one construct I miss from shell scripts... The ability to pipe the
[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>
Hi, Glen,
Howdy,
> I asked him/her. He/She opened the new site using tiki-1.0.4.
Hi, Glen,
Howdy,
[#4769] unix 'time' in Ruby? — Robert Feldt <feldt@...>
Hi.
[#4774] Module vs. Class — Jilani Khaldi <jilanik@...>
Hi,
[#4776] Listing methods in a module — DaVinci <bombadil@...>
Hi all. I need a little help :)
[#4792] closures — Stuart Zakon <zakons@...>
Can somebody please explain what a closure is within the context of
[#4809] Some questions — Friedrich Dominicus <frido@...>
[#4849] FEATURE REQUEST: Fixnum bitfields — Wayne Scott <wscott@...>
Hi,
[#4883] Re-binding a block — Dave Thomas <Dave@...>
[#4916] Re: [TOY] FL — Andrew Hunt <andy@...>
> I still don't understand sorry.
[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>
Hi,
[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>
Nobody cares about this but me,
Thanks very much for the input.
SugHimsi.
,
[#4951] What do I need to compile 1.4? — "Glen Stampoultzis" <trinexus@...>
Platform is Windows 98
[#4987] Ruby Book Ch 2 English -- arguments/parameters/options? — Jon Babcock <jon@...>
Once again, I must impose on your good graces.
[#4992] Re: Perl 6 rumblings -- RFC 225 (v1) Data: S uperpositions (fwd) — Aleksi Niemel<aleksi.niemela@...>
Michael dared to suggest, and was probably right:
[#5009] Re: Ruby Book Ch 2 English -- arguments/parameters/options? — "Dat Nguyen" <thucdat@...>
[#5011] Changes in 1.6.0 — matz@... (Yukihiro Matsumoto)
Hi,
[#5013] A QuantumSuperposition Proposal for Ruby — Huayin Wang <wang@...>
# I have been play around the QuantumSuperpositions idea today and
[#5028] A Tru64 problem and ruby-talkietiquette — Aleksi Niemel<aleksi.niemela@...>
I just saw this (the little I could see in English)
[#5033] Having problems with Net::HTTP::do_finish — Dan Schmidt <dfan@...>
I just started using Ruby yesterday, and I'm having trouble with my
[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>
Hi,
On Sat, 23 Sep 2000, Yukihiro Matsumoto wrote:
Hi,
On Fri, 22 Sep 2000, Masahiro Tanaka wrote:
>From: Robert Feldt <feldt@ce.chalmers.se>
[#5061] Proposal: Add rubycpp.h or include in ruby.h — Robert Feldt <feldt@...>
[#5070] Ruby Book 2.18, Eng.tl, kesaran pasaran? — Jon Babcock <jon@...>
From Ruby Book 2.18:
[#5077] Crazy idea? infix method calls — hal9000@...
This is a generalization of the "in" operator idea which I
[#5082] Application Error in 1.6.0 on Win2K — "Kevin Burge" <kcbspam@...>
I've created a 1.6.0 ruby extension (1.6.0 (2000-09-19) [i586-mswin32]),
[#5092] RE: Hanging require — Aleksi Niemel<aleksi.niemela@...>
> ruby -v a.rb
[#5114] Types and === — hal9000@...
<sigh> I imagine Yoda behind me, shaking his little green head
[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>
When I try to compile Ruby 1.6.1, I get the following error:
[#5161] Re: Types and === — schneik@...
[#5175] Compiling 1.6.1 problem — Tony Reed <Callus@...>
Compiling Ruby 1.6.1 fails:
Hi,
On 9/29/00, Yukihiro Matsumoto wrote:
From: Tony Reed <Callus@Sympatico.CA>
[ruby-talk:5143] Re: Types and ===
Hal asks:
> # Are there any two types X and Y such that x===y and y===x both have
> # meaning, and mean different things?
Conrad helps:
> Do relations like inside ... count as === case candidates?
I was thinking much harder cases, but this one is really easy.
Think that regexp.===(other) actually delegates to self.match(other) so the
meaning of === is thought to be purely useful in context of String (or a
class which implements to_s).
If we take a Bag, and put stuff in it, we could argue that the Bag has other
functions that merely containing something. So let's go one step higher -
let's take a Container. Container merely has some stuff and it's main
function is to contain. Thus Container#=== maps to Container#contains?.
<friendly_note>
Now comes a lot of meaningless discussion, so if you're busy you should skip
to the last paragraphs.
</friendly_note>
So it makes sense to write
case bought_object
when shopping_bag
puts "dull old you"
when bag_of_tricks
puts "hmm...you seem quite interesting person to me"
else
log "seems we have a hacker here, well, he can't misuse our systems"
end
Remember also there's a this weird cube with infinite surface and zero
volume. So nothing could be inside it. Still you could easily stuff that
thing in bag_of_tricks. There's no point, however, to claim it's an
container - no it's purely an entertainer. It's main function is to
surprise. There's entire group of entertaining wonders of world, and
ZeroVolumeCube "implements" Entertainer interface, which among all fun
things has a method to query if this entertainer is surprising.
On the other hand, the cube surprise only people pondering it's essence, and
ordinary data structures couldn't care less (even though the Hash would be
compeletely green because of envy to other type of hash, which could contain
infinite number of elements but take only constant space :).
module Entertainer
def surprising?; end
end
class ZeroVolumeCube
def surprising?(target)
case target
when PeopleWare
true
when Hardware
false
when Software
false
when AlienFormOfLife
true
else
false
end
end
def ===(other)
surprising?(other)
end
end
Now, while my examples are purely made, and might not make any sense I could
argue the functionality in above bought_object case should claim me as
interesting person if I buy ZeroVolumeCubes. At the same time I might query
of all the candidates in my space what I should do with them:
tiny_zvc = ZeroVolumeCube.new(size => miniature)
circus = Circus.new
colosseum = Circus.new(size => CIRCUS::ENORMOUS)
girl_candidate_space.each do |girl|
case girl
when tiny_zvc
puts girl.details + " is just like I want it"
when circus
puts girl + " is fun company too"
when colosseum
puts girl + " is nice but simply can't afford her"
when /ann/i
puts girl.name + ", had too much of these"
when Cook
sure_choices << girl end
end
(OT note, few of my ex-girlfriends have 'nn' in their names, like Anna,
Anne, Anne, Anne, Hanna, Hanna. B-} )
I hope I made clear few points. In any case I'd like to summarize them even
if they just got more blurred:
1) the classes might not be interested in reproducing functionality of == in
===.
2) the classes will probably implement their only, sole
interesting usage in ===.
3) the x == y is commutative, the x === y might not be
The third point needs more argumentation. Take an example of the case of
container (like a bag) which implements === as bag.contains?(object) and if
object does not do === like a container does the results differ.
Here's the catch. Even if the objects does the go of container
(ZeroVolumeCube#contains? is trivial and really uninteresting for anything
but claiming it's a special case of a container) we might not have same
results.
So, finally, as an example of (x===y) != (y===x) I can conclude
bag.===(zero_volume_cube) #=> true
zero_volume_cube.===(bag) #=> false
Uh, let me be excused... :)
- Aleksi