[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03457] Re: Static Typing( Was: Waffling between Python and Ruby)

From: Dave Thomas <Dave@...>
Date: 2000-06-16 07:48:21 UTC
List: ruby-talk #3457
Conrad Schneiker <schneik@austin.ibm.com> writes:

> But I still have not seen convincing arguments that some form of
> constant/frozen class (aka static typing) couldn't be a worthwhile
> extension of Ruby.

The most compelling argument to me is "is it ain't broke, don't fix
it."

In this context, it means that someone needs to produce real evidence
that:

  1. there is a problem
  2. static typing fixes it
  3. static typing is meaningful within the context of Ruby
  4. static typing can be implemented in Ruby

I feel that (3) is probably one of the more difficult points to
prove. Assuming a type is represented by a class name (a dubious
assumption but I haven't seen better here), then for a static type to 
be meaningful, that class and all that class' ancestors must be
frozen (otherwise you could change the semantics of an object at run
time).

If a class is frozen, then singleton classes based off that class
become a problem. For example,

    a = "Hello"
    def a.+(b)
       "walter"
    end

What is the type of 'a' above? Clearly it isn't 'String' anymore.

But then you get a logical problem. Global methods in Ruby extend a
particular singleton instance of Object. Under static typing, Object
must be frozen (because it is a ancestor of all classes). Thus the
object under which you define these global functions can no longer be
an instance of Object (because adding functions to it changes its
semantic, just as adding + to 'a' stops 'a' being a String).

This leads you to a problem. The global object can no longer be an
instance of the frozen class Object. But all objects in Ruby must be
descendents of Object. Dizzy.....

I don't think that adding static types to Ruby is as obvious as some
people are making out.

Again, what exactly _are_ people trying to fix anyway?


Dave

In This Thread