[#11822] RCR: Input XML support in the base Ruby — Dave Thomas <Dave@...>

15 messages 2001/03/01

[#11960] Not Ruby, for me, for the moment at least — "Michael Kreuzer" <mkreuzer@... (nospam)>

I wrote on this newsgroup last weekend about how I was considering using

11 messages 2001/03/04

[#12023] French RUG ? — "Jerome" <jeromg@...>

Hi fellow rubyers,

16 messages 2001/03/05

[#12103] disassembling and reassembling a hash — raja@... (Raja S.)

Given a hash, h1, will the following always hold?

20 messages 2001/03/06

[#12204] FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1>

Ruby is, indeed, a very well designed language.

64 messages 2001/03/07
[#12250] Re: FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1> 2001/03/07

>>>>> "GK" == GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:

[#12284] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/08

In message "[ruby-talk:12250] Re: FEATURE REQUEST: 'my' local variables"

[#12289] Re: FEATURE REQUEST: 'my' local variables — matz@... (Yukihiro Matsumoto) 2001/03/08

Hi,

[#12452] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/12

In message "[ruby-talk:12289] Re: FEATURE REQUEST: 'my' local variables"

[#12553] Re: FEATURE REQUEST: 'my' local variables — Dave Thomas <Dave@...> 2001/03/13

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#12329] Math package — Mathieu Bouchard <matju@...>

18 messages 2001/03/09

[#12330] Haskell goodies, RCR and challenge — Robert Feldt <feldt@...>

Hi,

19 messages 2001/03/09
[#12374] Re: Haskell goodies, RCR and challenge — matz@... (Yukihiro Matsumoto) 2001/03/10

Hi,

[#12349] Can Ruby-GTK display Gif Png or Jpeg files? — Phlip <phlip_cpp@...>

Ruby-san:

20 messages 2001/03/09

[#12444] class variables — Max Ischenko <max@...>

14 messages 2001/03/12

[#12606] Order, chaos, and change requests :) — Dave Thomas <Dave@...>

17 messages 2001/03/14

[#12635] email address regexp — "David Fung" <dfung@...>

i would like to locate probable email addresses in a bunch of text files,

12 messages 2001/03/14

[#12646] police warns you -- Perl is dangerous!! — Leo Razoumov <see_signature@127.0.0.1>

I just read this story on Slashdot

14 messages 2001/03/14
[#12651] Re: police warns you -- Perl is dangerous!! — pete@... (Pete Kernan) 2001/03/14

On 14 Mar 2001 11:46:35 -0800, Leo Razoumov <see_signature@127.0.0.1> wrote:

[#12691] Re: police warns you -- Perl is dangerous!! — "W. Kent Starr" <elderburn@...> 2001/03/15

On Wednesday 14 March 2001 15:40, Pete Kernan wrote:

[#12709] [OFFTOPIC] Re: police warns you -- Perl is dangerous!! — Stephen White <spwhite@...> 2001/03/16

On Fri, 16 Mar 2001, W. Kent Starr wrote:

[#12655] Re: FEATURE REQUEST: 'my' local variables — "Benjamin J. Tilly" <ben_tilly@...>

>===== Original Message From Leo Razoumov <see_signature@127.0.0.1> =====

18 messages 2001/03/14

[#12706] Library packaging — "Nathaniel Talbott" <ntalbott@...>

I have a project that I'm working on that needs to live two different lives,

30 messages 2001/03/16

[#12840] Looking for a decent compression scheme — Dave Thomas <Dave@...>

14 messages 2001/03/19

[#12895] differences between range and array — "Doug Edmunds" <dae_alt3@...>

This code comes from the online code examples for

16 messages 2001/03/20
[#12896] Re: differences between range and array — "Hee-Sob Park" <phasis@...> 2001/03/20

[#12899] Re: differences between range and array — Jim Freeze <jim@...> 2001/03/20

On Tue, 20 Mar 2001, Hee-Sob Park wrote:

[#12960] TextBox ListBox — Ron Jeffries <ronjeffries@...>

Attached is a little Spike that Chet and I are doing. It is a

13 messages 2001/03/20

[#12991] [ANN] Lapidary 0.2.0 — "Nathaniel Talbott" <ntalbott@...>

Well, here's my first major contribution to the Ruby world: Lapidary. It's a

16 messages 2001/03/20

[#13028] mkmf question — Luigi Ballabio <luigi.ballabio@...>

15 messages 2001/03/21

[#13185] Reading a file backwards — "Daniel Berger" <djberg96@...>

Hi all,

21 messages 2001/03/25
[#13197] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

> Hi Dan,

[#13203] Re: Reading a file backwards — Mathieu Bouchard <matju@...> 2001/03/25

On Sun, 25 Mar 2001, Daniel Berger wrote:

[#13210] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

"Mathieu Bouchard" <matju@sympatico.ca> wrote in message

[#13374] Passing an array to `exec'? — Lloyd Zusman <ljz@...>

I'd like to do the following:

15 messages 2001/03/31

[#13397] Multidimensional arrays and hashes? — Lloyd Zusman <ljz@...>

Is it possible in ruby to make use of constructs that correspond to

14 messages 2001/03/31

[ruby-talk:12439] Re: Math package

From: "Christoph Rippel" <crippel@...>
Date: 2001-03-12 00:29:51 UTC
List: ruby-talk #12439
> From: ale@crimson.propagation.net [mailto:ale@crimson.propagation.net]
[...]
> 
> Someone presented a wild idea here not so long ago. IIRC he queried
I think,

this ``someone'' was me
> whether it would be useful to extend OO concepts to other direction than
> usually though. Namely having more than one receiver of a message.
> 
> In this case a function with two parameter could still exhibit the natural
> OO order of syntax
> 
>     value = (y,x).atan2
the notation (<y,x>).atan2 is sometimes used for this ... this would work
well with Ruby's scanning rules too I believe ...

[...]
> Nevertheless, while I doubt the idea was very original, it's surely
> interesting one.
it isn't original at all  - the OO-kraut calls this multiple-dispatch - 
and I find this notion much more obvious and natural than the singleton
notion.

Anyway consider the following is as way off tangent ramblings since 
Matz does not like multiple dispatch anyway (and I don't really know 
what I am writing about anyway;-)
> |    value = (y,x).atan2
> 
> No, please.
> 
In general relavant google keywords for this stuff are (Cecil singleton
multiple dispatch.)

This how multiple dispatch might work in Ruby: 
Note I am not suggesting this (it is seems too complicated) but 
would certainly prefer something like this over simple minded 
type-based overloaded functions - in fact consider this as a 
warning why type-based overloaded functions do not fit at all
into the current single-dispatch ruby object model.

Let's you already defined your classes A,B (in the example A=B= Float)
you could define (otherwise you would get an exception) as basic 
definition, short for  X = Class::IsPair(A,B)

class X IsPair A,B
# at this point you have access to  mself(0), mself(1) - 
# and the double Object self - i.e. 
# self == (<mself(0),mself(1)>)
def atan2 
    #do calculation with mself(0),mself(1)
    return arctan  # normal object
end
def polar
    #do calculation with mself[0],mself[1]
    return (<arctan,radius>) # double object which would be 
end                          # different from the array [arctan,radius]
end
(more generally this could be class X IsTuple A0,A1,A2,A3)

This definition creates the double class Object X - and would work
the following way - assuming that A,B = Float,Float

a, b = 2.0,3.1 # creates the two normal objects a,b
x = (<a,b>)    # creates double Object x
atan = x.atan2  # create normal object atan 
pol =  x.polar # create double object pol

The only way normal objects could access the components of 
double objects would be over accessor methods #mself 
defined in the double object Object2 class. It would 
probably useful to add a method which flattens the double
object and include short-cuts for mself(0),mself(1)

class Object2 IsPair Object,Object
def mself0  
    mself(0)
end
...
def to_obj; 
	return mself[0],mself[1]  # normal array
end
def mtype
	return  # an array of the multi-type would be 
end            # [Object,Object]  
end


The real interesting point is of course the multi-method lookup 
- the point where type-based overloaded functions are both slow 
and muddled with Koenig lookups etc.. (the following leaves
out the question on how to generalize module inclusion but this
can probably be done coherently as well) 
The basic strategy probably should be lexicographic over the mtype
components in our example an double object since this strategy
is simple and coherent. In our example this would be 
[Float,Float],[Float,Numeric],[Float,Object], [Numeric,Numeric]
,..., [Object,Object] 

This strategy is also very slow in long object paths (particularly
in nested name-spaces) so have you to restrict your search path to
the double types which actually have been created - in practice 
(ops  theory;-) this boils to re-computing the ``mtype-succ''every
time a new double type is instantiated but this can be done rather
efficiently. Anyway in your example the search path would as
short as [Float,Float],[Object,Object]  not too bad.  

What is really interesting what happens if you allow the creation
of multi-types where some of the components are singleton types - 
you probably could define functions like functional type languages 
do ...

Christoph

In This Thread