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

From: jstern@... (Josh Stern)
Date: 2001-01-24 21:10:02 UTC
List: ruby-talk #9827
Reimer Behrends <behrends@cse.msu.edu> wrote:
>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)?  

Reimer, you misunderstood the pragmatics of my post.
It had previously  been asserted in the discussion that
Ruby would have trouble with full blown generic programming
because of the lack of overloading and and automatic instantiation
of overloaded functions for the generic parameters.  There had
also been a request for a more fully explained example of
generic programming, especially in a mathematical project
where its use may allow the mathematician to think in the
'language of the problem' which can be a complex abstract
language for a mathematician.  So  I mention CGAL as
a good example of the latter.  I also mentioned that a
good way to do generic programming, in its full generality
in Ruby, would be to transpose the 'traits' technique
to one in which a proxy class directly implements
ruby functions that returns types as objects.  In your
discussion below, you seem to express a superficially
similar idea about how to do generic programming in
Ruby, though I confess that I don't understand all
of your post.

>To begin with, for the most basic use of generic types, no additional
>effort is necessary--Array and Hash are obvious examples. 

A main idea of the traits technique is that one may bundle
all of the generic inteface in a kind of proxy class.
I agree that for the simple collectin classes like hash,
the generic interface (involving hashing and comparison)
is simple enough (only two operations) that there is
no need to do this.  The traits technique pays dividends
when there interface has many more methods and there
are reusability relationships between the traits needs
of different classes.

>For more
>advanced schemes, it may be best to avoid the elaborate and
>unnecessarily complicated maze of C++ templates and return to simpler
>approaches. 

C++ templates aren't actually complicated, but anyway, that's
off the point anyway.

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, 

a) that's not necessary
b) the traits technique approximates the same thing anyway.

>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).

I don't understand which is-a relationship you are talking about here.
Could you give an example?

>A straightforward implementation would pass types, and whatever other
>generic parameters you have, as arguments to 'new', to be stored in type
>variables. 

What happens in practice is that little details of implementation
can change the interface, since more types are required.
That is one reason why it works out well to bundle them
in a trait class.  But we agree on the idea of using
types as objects in Ruby.

>Instantiating the formal paramaters would then be the
>equivalent to performining currying on 'initialize'. 

Have to ask you again for an example.  I know currying
and initialize, but I'm not sure what your vision is
here.

>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. 

Agreed!

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.

I wasn't advocating that.  Though I have suggested in other posts
that overloading would be useful in Ruby, but for somewhat different
reasons.

Regards,

-= Josh


In This Thread