[#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 subscription to "Ruby-Talk". Ruby is not right for what I do. The "Bulk Mail" is overwhelming. Please, no more e-mail! Thank you! yours truly, Stan Daniels

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:9703] Re: 101 Misconceptions About Dynamic Languages

From: "Christoph Rippel" <crippel@...>
Date: 2001-01-22 06:10:04 UTC
List: ruby-talk #9703
> -----Original Message-----
> From: dave@thomases.com [mailto:dave@thomases.com]On Behalf Of Dave
> Thomas
> Sent: Sunday, January 21, 2001 06:53 PM
> To: ruby-talk ML
> Subject: [ruby-talk:9695] Re: 101 Misconceptions About Dynamic Languages
>
>
> "Christoph Rippel" <crippel@primenet.com> writes:
>
> > try to express this in Ruby - it is going to be a nightmare.
>
> Perhaps you could help me understand the problem. The Ruby solution
> would seem to my naive eyes about half the size an considerably
> clearer. Without the need to jump through template hoops for type
> safety, most of the issues of genericity seem to go away.
>
> What am I missing?
>
> Dave
I think what ruby is missing is syntactic sugar for writing class generating
functions - the ``polynomial.rb'' is an example where lack of this facility resulted
in an improvable design (sorry if I offend anyone).


I guess one would start writing this package with a (Class) generating like

class Ring
def   Ring.mod_ZZ (n) # you could write this class function
end
end

so that one could write

A  = Ring.mod_ZZ 13
B  = Ring.mod_ZZ 23
C = Ring.mod_ZZ 13


and A,B work exactly like (for B replace 13 => 23)


class A
  N = 13  # this is the crucial part
  def initialize n
      @rep = n % N
  end
  def + (r)
       (@rep + rep.r) % N
  end
  attr_reader :rep
...
end


The import thing is that the type information is attached to the object ...

a1 =  A.new 11
a2 =  B.new 11
b1 =  C.new 10  # definitely want A.id == C.id
b2 =  B.new 11  # is nor hard but is not natively supported

than the internal representation of

a1 + b1 and a2 + b2

won't be equal.


Once you are finished with this you want write a polynomial ring Class generating
function

def  Ring.poly myRing , *vars # array of strings
end

so that you can call

PolyRing =  Ring.poly  (A, [ 'x', 'y' ] )



The point is that A can be anything supporting your basic arithmetic operations like
Float, Bignum ... or one of the Rings above etc. and ``PolyRing''  would be your
standard polynomial ring supporting a couple of extra algorithms depending on the
type of myRing (example field, Euclidian ring, Float  ... ).  Again the main point
is that you have class constants

class PolyRing
Coefftype = A
Dim = var.length
...
end

This is the natural way of writing this package since this is the way how the math
works and in C++ you can easily do this. It would be equally okay to add a couple of
extra Class generating functions like
def Ring.poly_coeff_field  myField, *vars
..
end
but this is not the real issue.

What is striking that the ruby fluent writer of the ``polynomial.rb'' did not write
this like this and had to suffer the consequence of his un-mathematical design -
i.e. implement the same algorithms a couple of times instead of implementing a
generic algorithm once. I would be forced to rewrite everything if I wanted to add
another base ring (field).

My point is that this is an example where the syntactic inconvenience (or
limitations?) of the programming language resulted in an unnatural design - if ruby
would sport build in support for generics he surely would have used them. I believe
you can write something like this but I had trouble with #module_eval and the class
constant N and gave up on it.  Delicators are a absolute non-non because performance
issues. I hope I was not too incoherent.


Christoph



In This Thread