[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:5017] Re: A QuantumSuperposition Proposal for Ruby

From: Yasushi Shoji <yashi@...>
Date: 2000-09-20 00:51:18 UTC
List: ruby-talk #5017
At Wed, 20 Sep 2000 01:53:06 +0900,
Huayin Wang <wang@rjka.com> wrote:
> 
> # I have been play around the QuantumSuperpositions idea today and
> # have come up with the following.
> #
> # All the classes that implement Enumerable should have 4
> # more methods:
> #
> #    any?   all?   any   all

i don't have any objection for 'any?' and 'all?'.

but, seems to me 'any' and 'all', or class Quantum is implicitly
assuming each object given to the receiver is class of Numeric.

if class Quantum is assuming class Numeric, and method any and all is
assuming class Quantum, IMHO, they shouldn't be in the module
Enumerable.

[...]

> ###  the following is still illegal :(
> 
> # a = 2 * [1,2,3]
> # b = 2 > [1,2,3].any

these will work if you give a method called coerce.  but again, I'm
not sure we are assuming Numeric as core object or not.

btw, i'm not sure it's ok to swap self and other in method coerce.  if
we can define Quantum#*, you can use it. but...

one more thing.  IMHO, it's better to use Symbol rather than String
for @method.
--
         yashi

class Quantum
  def initialize(o,t)
    @states = o
    @method = t
  end
  def any
    @method = :any?
    self
  end
  def all
    @method = :all?
    self
  end
  def eigenstates
    @states.collect { |x| x.eigenstates }
  end
  # methods which returns true or false should be defined
  # otherwise it will be cached by 'method_missing'
  def >(o)
    @states.send(@method) { |x| x > o }
  end
  def <(o)
    @states.send(@method) { |x| x < o }
  end
  def ==(o)
    @states.send(@method) { |x| x == o }
  end
  def method_missing(id, arg)
    @states.collect! { |x| x.send(id, arg)}
    self
  end
  def coerce(o)
    return self, o
  end
end

module Enumerable
  def any?
    self.each do |x|
      return true if yield(x)
    end
    return false
  end
  def all?
    self.each do |x|
      return false unless yield(x)
    end
    return true
  end

  def any
    return Quantum.new self, :any?
  end
  def all
    return Quantum.new self, :all?
  end
end

In This Thread