It strikes me that much of the premise behind this thread is misguided =
as it overlooks the importance of meta-programming in developing any =
Ruby program of substantive size. Where a Java or C++ programmer might =
write a factory method to create instances of a class and spend much of =
their effort enumerating types explicitly, it's not unusual in Ruby to =
write meta-programs which create a variety of class and method =
definitions on request to create or repurpose object instances for the =
task at hand.

I have great difficulty seeing how static type annotations could =
adequately cope with this, making them much more useful to new Rubyists =
than their more-experienced peers. That could be a two-edged sword as it =
would reinforce the idea that nominal types are a good fit with Ruby to =
the very people who are least likely to embrace structural typing.

A more profitable place to look for inspiration in building tools that =
support Ruby development would be amongst dynamic languages such as =
Smalltalk, Lisp and Forth. Like Ruby none of these assume a single =
compilation phase which fixes type properties indefinitely.


Ellie

Eleanor McHugh
Games With Brains
http://feyeleanor.tel
----
raise ArgumentError unless @reality.responds_to? :reason