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

From: behrends@... (Reimer Behrends)
Date: 2001-01-24 10:40:02 UTC
List: ruby-talk #9797
Josh Stern (jstern@foshay.citilink.com) wrote:
> There is a real, non-trivial, example of template
> genericity being used to express mathematical ideas
> in the CGAL library:
> 
> http://www.cgal.org/Manual/doc_html/frameset/fsKernel.html
> http://www.cgal.org/Manual/doc_html/frameset/fsBasic.html
> 
> How to do such things in Ruby in full generality (efficiency
> aside)?  

To begin with, for the most basic use of generic types, no additional
effort is necessary--Array and Hash are obvious examples. For more
advanced schemes, it may be best to avoid the elaborate and
unnecessarily complicated maze of C++ templates and return to simpler
approaches. For instance, the instantion of a parametric type A[X] as
A[T], where X is a formal parameter and T a concrete type, can be seen
as specialization inheritance from A[X] with X = T. What we need for
this to work is to be able to work with types as first class
objects--something that C++ can't do, but Ruby can. Instantiating formal
parameters of generic types is basically constraining a family of
objects along one more dimensions. While I believe that somebody
mentioned earlier that genericity and inheritance are orthogonal
concepts, the opposite is true: generics introduce a classical is-a
relation, generally with full substitutivity (modulo the usual
covariance issues).

If the full machinery of inheritance is thus applied to a language, you
will get something like Beta's virtual patterns--where you cannot only
redefine functions along an inheritance hierarchy, but also types,
exceptions, etc. A similar approach was used by Meyer in the first
edition of Object Oriented Software Construction to avoid the
introduction of generic types. It has also been rediscovered as the
concept of "virtual types" for the purpose of introducing genericity in
Java.

A straightforward implementation would pass types, and whatever other
generic parameters you have, as arguments to 'new', to be stored in type
variables. Instantiating the formal paramaters would then be the
equivalent to performining currying on 'initialize'. Variants would be
having functions returning types, which can then be redefined, or
aliasing type names to constants. (And of course, when I'm referring to
types, just about any type of object can be substituted.)

The implementation of Z_n, for instance, should be a straightforward
exercise. The need of generics for a polynomial ring is not equally
obvious; we only need a type parameter as a simple case of a factory
pattern, and even this could be avoided if desired.

A lot of the problems that you have in many statically typed languages
just go away when you have types as first-class objects. It should also
be noted that just because something is part of C++ it should not
necessarily be added to another language; in fact, the converse is
generally true.

[...]

				Reimer Behrends

In This Thread