[#8566] Visions for 2001/1.7.x development? — Robert Feldt <feldt@...>

Hi matz and other Ruby developers,

18 messages 2001/01/03
[#8645] Re: Visions for 2001/1.7.x development? — matz@... (Yukihiro Matsumoto) 2001/01/04

Hi,

[#8580] bug?? — jmichel@... (Jean Michel)

I don't understand the following behaviour:

19 messages 2001/01/03

[#8633] Interesting Language performance comparisons - Ruby, OCAML etc — "g forever" <g24ever@...>

13 messages 2001/01/04

[#8774] No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...>

So, why not include Comparable in Array by default? It shouldn't have any

28 messages 2001/01/07
[#8779] Re: No :<, :>, etc. methods for Array — matz@... (Yukihiro Matsumoto) 2001/01/07

Hi,

[#8780] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

matz@zetabits.com (Yukihiro Matsumoto) wrote:

[#8781] Re: No :<, :>, etc. methods for Array — gotoken@... (GOTO Kentaro) 2001/01/07

In message "[ruby-talk:8780] Re: No :<, :>, etc. methods for Array"

[#8782] Re: No :<, :>, etc. methods for Array — "Brian F. Feldman" <green@...> 2001/01/07

gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:

[#8829] Sandbox (again) — wys@... (Clemens Wyss)

Hi,

20 messages 2001/01/08
[#8864] Re: Sandbox (again) — Clemens Hintze <c.hintze@...> 2001/01/08

On 8 Jan, Clemens Wyss wrote:

[#8931] String confusion — Anders Bengtsson <ndrsbngtssn@...>

Hello everyone,

21 messages 2001/01/09
[#8937] Re: String confusion — matz@... (Yukihiro Matsumoto) 2001/01/09

Hi,

[#8953] Please remove account from files — "Thomas Daniels" <westernporter@...>

Please take my e-mail address from your files and "CANCEL" my =

14 messages 2001/01/09
[#8983] Re: Please remove account from files — John Rubinubi <rubinubi@...> 2001/01/10

On Wed, 10 Jan 2001, Thomas Daniels wrote:

[#9020] time to divide -talk? (was: Please remove account from files) — Yasushi Shoji <yashi@...> 2001/01/10

At Wed, 10 Jan 2001 14:23:30 +0900,

[#9047] Re: time to divide -talk? (was: Please remov e account from files) — Aleksi Niemel<aleksi.niemela@...>

Yasushi Shoji:

27 messages 2001/01/10
[#9049] Re: time to divide -talk? — Yasushi Shoji <yashi@...> 2001/01/10

At Thu, 11 Jan 2001 00:20:45 +0900,

[#9153] what about this begin? — Anders Strandl Elkj誡 <ase@...> 2001/01/11

[#9195] Re: Redefining singleton methods — ts <decoux@...>

>>>>> "H" == Horst Duch=EAne?= <iso-8859-1> writes:

10 messages 2001/01/12

[#9242] polymorphism — Maurice Szmurlo <maurice@...>

hello

73 messages 2001/01/13

[#9279] Can ruby replace php? — Jim Freeze <jim@...>

When I read that ruby could be used to replace PHP I got really

15 messages 2001/01/14

[#9411] The Ruby Way — "Conrad Schneiker" <schneiker@...>

As a member of the "Big 8" newsgroups, "The Ruby Way" (of posting) is to

15 messages 2001/01/17

[#9462] Re: reading an entire file as a string — ts <decoux@...>

>>>>> "R" == Raja S <raja@cs.indiana.edu> writes:

35 messages 2001/01/17
[#9465] Re: reading an entire file as a string — Dave Thomas <Dave@...> 2001/01/17

raja@cs.indiana.edu (Raja S.) writes:

[#9521] Larry Wall INterview — ianm74@...

Larry was interviewed at the Perl/Ruby conference in Koyoto:

20 messages 2001/01/18
[#10583] Re: Larry Wall INterview — "greg strockbine" <gstrock@...> 2001/02/08

Larry Wall's interview is how I found out

[#9610] Re: 101 Misconceptions About Dynamic Languages — "Ben Tilly" <ben_tilly@...>

"Christian" <christians@syd.microforte.com.au> wrote:

13 messages 2001/01/20

[#9761] Re: 101 Misconceptions About Dynamic Languages — ts <decoux@...>

>>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:

16 messages 2001/01/23

[#9792] Ruby 162 installer available — Dave Thomas <Dave@...>

15 messages 2001/01/24

[#9958] Re: Vim syntax files again. — "Conrad Schneiker" <schneik@...>

Hugh Sasse wrote:

14 messages 2001/01/26
[#10065] Re: Vim syntax files again. — Hugh Sasse Staff Elec Eng <hgs@...> 2001/01/29

On Sat, 27 Jan 2001, Conrad Schneiker wrote:

[#9975] line continuation — "David Ruby" <ruby_david@...>

can a ruby statement break into multiple lines?

18 messages 2001/01/27
[#9976] Re: line continuation — Michael Neumann <neumann@...> 2001/01/27

On Sat, 27 Jan 2001, David Ruby wrote:

[#9988] Re: line continuation — harryo@... (Harry Ohlsen) 2001/01/28

>A statement break into mutliple lines if it is not complete,

[ruby-talk:9764] A generic prototype

From: "Christoph Rippel" <crippel@...>
Date: 2001-01-23 15:09:07 UTC
List: ruby-talk #9764
This in response to [ruby-talk:9761]

Thank you very much this is exactly what I wanted - except you
you got the math wrong - i.e the return type of + is wrong ;-)
(given my wrong input of course ..).

Thanks to your hint I cooked up a generics interface. As usual
I have eat my words - i.e. the thing is entirely based on mixin
 - at least it maintains a bit of the template flavor ... (the
type qualifier are necessary and there is no lose of speed to
access class constants like this if I remember correctly).

I wished that something like this would end up in the official class
interface to encourage people to use generics - when appropriate.
(there are unsurprisingly a lot of warnings, generic_bucket is
obviously not thread save and there are other issues but its a
start.)

Christoph




class Module
   protected :append_features
end

class Class
  def Class.generic (aModule,theConstants, aSuperclass = Object)
     klass   = Class.new aSuperclass
     aModule.append_features klass
 #   klass.extend aModule
     mk = klass.constants
     theConstants.each_index  { |c|  klass.class_eval "#{mk[c]} = theConstants[c]
" }
     klass
  end
  def Class.generic_bucket (aModule,theConstants, classes, aSuperclass = Object)
     if  classes.key? theConstants
        classes[ theConstants ]
     else
        klass   = Class.new aSuperclass
        aModule.append_features klass
#       klass.extend aModule
        mk = klass.constants
        theConstants.each_index  { |c|  klass.class_eval "#{mk[c]} = theConstants[c]
" }
        classes[theConstants] =  klass
        klass
      end
   end
end


module  Test
  W = 6
  X = 56
def ops
  p [type::W, type::X]
end
end

$class = {}
test1 = Class.generic_bucket(Test,[5,'a'], $class)
test2 = Class.generic_bucket(Test,[5,'a'], $class)
test3 = Class.generic_bucket(Test,['r','l'], $class)
p test1.id == test2.id  # true
test3.new.ops   #  ["l", "r"]





# Ruby correct ?


class Ring
   def  Ring.mod_ZZ (n)
      Class.generic_bucket(M_mod_ZZ,[n],@@__mod_ZZ)
   end

private
module  M_mod_ZZ
  N = 1 # default
  def initialize  (n)
     @rep  = n  % type::N
  end
  def + (r)
     type::new (@rep + r.rep)
  end
  def inspect
      @rep
  end
  protected
  attr_reader  :rep
end
@@__mod_ZZ ={}
end


A  = Ring.mod_ZZ 13
B  = Ring.mod_ZZ 23
C = Ring.mod_ZZ 13
a1 =  A.new 11
a2 =  B.new 11
b1 =  C.new 10
p A.id == C.id # true
b2 =  B.new 11
p a1 + b1  # 8
p a2 + b2  # 22
p a1 + a2 + a2 #  7


> -----Original Message-----
> From: ts [mailto:decoux@moulon.inra.fr]
> Sent: Tuesday, January 23, 2001 02:44 AM
> To: ruby-talk ML
> Cc: ruby-talk@netlab.co.jp
> Subject: [ruby-talk:9761] Re: 101 Misconceptions About Dynamic Languages
>
>
> >>>>> "C" == Christoph Rippel <crippel@primenet.com> writes:
>
> C> class A
> C>   N = 13  # this is the crucial part
>
>  The problem here is that N is resolved at compile time
>
> C>   def initialize n
> C>       @rep = n % N
> C>   end
> C>   def + (r)
> C>        (@rep + rep.r) % N
>                   ^^^^^
>                   r.rep
>
>   no ?
>
> C>   end
> C>   attr_reader :rep
> C> ...
> C> end
>
>
> C> The import thing is that the type information is attached to the object ...
>
> C> a1 =  A.new 11
> C> a2 =  B.new 11
> C> b1 =  C.new 10  # definitely want A.id == C.id
> C> b2 =  B.new 11  # is nor hard but is not natively supported
>
> C> than the internal representation of
>
> C> a1 + b1 and a2 + b2
>
> C> won't be equal.
>
>  Probably this not what you want (I know nothing about math :-))
>
> pigeon% cat b.rb
> #!/usr/bin/ruby
> class  Ring
>    @@class = {}
>    def Ring.mod_ZZ(n)
>       return @@class[n] if @@class.key? n
>       a = Class.new(self)
>       a.module_eval "N = #{n}"
>       @@class[n] = a
>       a
>    end
>   def initialize( n)
>      @rep = n % self.class::N
>   end
>   def + (r)
>        (@rep + r.rep) % self.class::N
>   end
>   attr_reader :rep
> end
>
>
> A  = Ring.mod_ZZ 13
> B  = Ring.mod_ZZ 23
> C = Ring.mod_ZZ 13
> a1 =  A.new 11
> a2 =  B.new 11
> b1 =  C.new 10
> p A.id == C.id
> b2 =  B.new 11
> p a1 + b1
> p a2 + b2
> pigeon%
>
> pigeon% b.rb
> true
> 8
> 22
> pigeon%
>
>
> Guy Decoux
>

In This Thread